java设计模式之单例设计模式和多例设计模式

时间:2021-03-25 14:51:12

单例设计模式:构造方法私有化,在类的内部定义static属性和方法,利用static方法来取得本类的实例化对象;无论外部产生多少个实例化对象,本质上只有一个实例化对象

饿汉式单例设计

class Singleton{
private static final Singleton INSTANCE = new Singleton();//产生一个实例化对象
private Singleton(){}//封装构造方法
public static Singleton getInstance(){
return INSTANCE;//取得实例化对象
}
public void print(){
System.out.print("hello word");
}
}
public class Test{
public static void main(String args[]){
Singleton s = Singleton.getInstance();//无论调用多少次getInstance()方法,产生的实例化对象都是相同的
s.print();
}
}

懒汉式设计模式

class Singleton{
private static final Singleton INSTANCE;//定义一个未实例化的本类对象
private Singleton(){}//封装构造方法
public static Singleton getInstance(){
if(INSTANCE == null){
INSTANCE = new Singleton();
}
return INSTANCE;//取得实例化对象
}
public void print(){
System.out.print("hello word");
}
}
public class Test{
public static void main(String args[]){
Singleton s = Singleton.getInstance();//无论调用多少次getInstance()方法,产生的实例化对象都是相同的
s.print();
}
}

多例设计模式:构造方法私有化,产生特定个数对象

class Sex{
private String sex;
private static final Sex MAN = new Sex("男");
private static final Sex WOMAN = new Sex("女");
private Sex(String sex){
this.sex = sex;
}
public static Sex getInstance(int ch){
switch(ch){
case 1:
return MAN;
case 2:
return WOMAN;
default:
return null;
}
}
public String toString(){
return sex;
}
}
public class Test{
public static void main(String args[]){
Sex s = Sex.getInstance(1);
System.out.println(s);
}
}