【设计模式】- 单利模式
适用场景
对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。
单利模式的分类
饿汉式
一开始就很饿,立马吃到肚子里。
懒汉式
当别人给我喂食时,我就张口吃掉。
两者的区别?
饿汉式:线程安全,由JVM保证。
懒汉式:线程不安全。
代码示例
饿汉式
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 {
//私有的默认构造子
private Singleton1() {}
//已经自行实例化
private static final Singleton1 INSTANCE= new Singleton1();
//静态工厂方法
public static Singleton1 getInstance() {
return INSTANCE;
}
}
懒汉式 (存在线程安全问题)
//懒汉式单例类.在第一次调用的时候实例化
public class Singleton2 {
//私有的默认构造子
private Singleton2() {}
//注意,这里没有final
private static Singleton2 single;
//静态工厂方法
public static Singleton2 getInstance() {
if (single == null) {
single = new Singleton2();
}
return single;
}
}
懒汉式 (存在线程安全问题)改进型1
利用静态内部类特性实现外部类的单例,线程安全并且高效
public class Singleton3 {
private static class SingleTonBuilder {
private static Singleton3 singleTon = new Singleton3();
}
public static Singleton3 getInstance() {
return SingleTonBuilder.singleTon;
}
}
不积跬步,无以至千里;不积小流,无以成江海。

浙公网安备 33010602011771号