单例设计:
在很多情况下有些类是不需要重复产生对象的。例如:Windows回收站。全局共享同一个回收站程序。
特点:构造方法私有化。类内部提供static方法获取实例化对象。
class Singleton{private static final Singleton INSTANCE = new Singleton();private Singleton() {}public static Singleton getIntance() {return INSTANCE;}public void print() {System.out.println("test");}}public class FirstJava {public static void main(String[] args) {Singleton st = Singleton.getIntance();st.print();}}
单例模式分类两种,一种是在系统加载Singleton类的时候自动提供实例化对象(如上),另一种是在第一次使用的时候进行实例化对象处理(如下)。
class Singleton{private static Singleton INSTANCE;private Singleton() {}public static Singleton getIntance() {if(INSTANCE == null){instance = new Singleton();}return INSTANCE;}public void print() {System.out.println("test");}}public class FirstJava {public static void main(String[] args) {Singleton st = Singleton.getIntance();st.print();}}
多例设计
与单例设计对应,单例设计指的是只保留一个实例化对象,多例设计设计可以保留多个实例化对象。
例如:如果定义一个描述性别的类,对象只有两个,男/女。
class Gender{private String title;private static final Gender male = new Gender("男");private static final Gender female = new Gender("女");private Gender(String title) {this.title = title;}public static Gender getGender(String title) {switch(title) {case "male":return male;case "female":return female;default:return null;}}public void print() {System.out.println(title);}}public class FirstJava {public static void main(String[] args) {Gender g = Gender.getGender("male");g.print();}}
多例设计与单例设计本质相同。
