《大话设计模式01》--单例模式
程序员文章站
2022-06-05 14:19:47
...
一,懒汉模式&&饿汉模式
public class Singleton {
private Singleton() { }
//1.懒汉模式;
private static Singleton singleton;
public static Singleton getInstance(){
if(null==singleton){
singleton= new Singleton();
}
return singleton;
}
}
class Singleton2{
private Singleton2() { }
//2.饿汉模式;
private static Singleton2 singleton2= new Singleton2();
public static Singleton2 getInstance(){
return singleton2;
}
}
出于线程安全考虑,可以加锁处理
//3.懒汉模式(线程安全)
class Singleton3{
private Singleton3(){}
private static Singleton3 singleton;
public static synchronized Singleton3 getInstance(){
if(singleton == null){
singleton = new Singleton3();
}
return singleton;
}
}
## 简单梳理实现思路
1,private 私有的构造器,使其它的类不能通过new直接获取当前类的实例;
2,public 公有的方法getInstance()对外提供唯一的实例;
3, 饿汉模式和懒汉模式的唯一区别在于Singleton初始化的时机, 饿汉模式在调用getInstance()方法之前已经新建好了实例对象, 而懒汉模式则时机较晚, 在调用getInstance()方法之后; 懒汉模式就是比较懒, 等到用的时候再去实例化需要的对象;