饿汉单例:
①将构造器私有化。②在类的内部直接创建一个对象。③提供一个静态的公共方法来返回对象。
public class eHan{
public static void main(String[] args){
Animal instance1 = Animal.getInstance();
Animal instance2 = Animal.getInstance();
System.out.println(instance1);
System.out.println(instance2);
}
class Animal {
private String kind;
private Animal(String kind){
this.kind = kind;
}
private static Animal dog = new Animal("狗");
private static Animal getInstance(){
return dog; //调用getInstance方法时返回已经提前创建好的对象
}
}
}
特点:
无论调用多少次getInstance方法,获得的永远是已经提前创建好的那一个对象,不会重复。
懒汉单例:
①将构造器私有化。②需要定义一个静态对象。③提供一个公共静态方法返回对象。
public class lanHan{
public static void main(String[] args){
Animal instance1 = Animal.getInstance();
Animal instance2 = Animal.getInstance();
System.out.println(instance1);
System.out.println(instance2);
}
class Animal{
private String kind;
private static Animal cat; //定义一个静态对象,默认是null
private Animal(String kind){
this.kind = kind;
}
public static Animal getInstance(){
if(cat == null) {
cat = new Animal("猫"); //此时cat不再为空
}
return cat;
}
}
}
特点:
用getInstance方法控制只产生一个对象,并且只当调用方法时才会创建对象。