饿汉式单例模式:
public class main {
public static void main(String[] args) {
order order1 = order.getmemberinstance();
order order2 = order.getmemberinstance();
System.out.println(order1==order2);
}
}
class order{
public order(){}
private static order memeber = new order();
public static order getmemberinstance(){
return memeber;
}
}
上述代码在order类中,建立了私有静态属性member,并赋值new order(),并通过public的order静态方法供外部调用,实现单例模式,由于无论是否访问order方法,都创建了order类 ,所以是饿汉式单例模式(因为饿,所以不管什么,都先弄出来),缺点是当不访问类方法时也创建了对象,占用内存,有点是因为事先创建出来了,所以线程安全
懒汉式单例模式
public class main {
public static void main(String[] args) {
order order1 = order.getmemberinstance();
order order2 = order.getmemberinstance();
System.out.println(order1==order2);
}
}
class order{
public order(){}
private static order memeber;
public static order getmemberinstance(){
if(memeber==null)//不要忘记写这个判断,否则不是单例模式了哦~!
memeber = new order();
return memeber;
}
}
懒汉式单例模式,与饿汉基本类似,不同在于,在类方法中,创建对象,注意,别忘了判断对象是否为空,否则不是单例模式。 优点是什么时候用,什么时候创建,也是懒汉模式名字的由来,后加载,节省内存,缺点是线程不安全。
什么时候用单例模式:
常见的单例场景: