
单例模式共分为三种方式、饿汉式、懒汉式、枚举方式等,每种方式都有各自的特点:
饿汉式实现方式:
//方式一 静态常量方式
public class Singleton {
// 构造方法私有化
private Singleton() {
}
// 对象私有化
private static final Singleton singleton = new Singleton();
public static Singleton getSingleton() {
return singleton;
}
}
//方式二 静态块方式
class SingletonX {
// 构造方法私有化
private SingletonX() {
}
// 对象私有化
private static SingletonX singleton ;
static {
singleton = new SingletonX();
}
public static SingletonX getSingleton() {
return singleton;
}
}
懒汉式实现方式:
// 静态内部类
public class Singleton2 {
// 构造方法私有化
private Singleton2() {
}
// 通过静态类创建对象
private static class SingletFactory {
private static final Singleton2 INSTANCE = new Singleton2();
}
public static Singleton2 getSingleton() {
return SingletFactory.INSTANCE;
}
}
枚举方式:
public enum Singleton3 {
INSTANCE;
}
以上几种方式,都算是比较完美的,项目中可以正常使用,懒汉式采用静态内部类的方式解决了线程安全的问题以及懒加载等,还有其余几种懒汉式的方式,比如双重锁等方式,个人不推荐,最推荐的方式是使用枚举。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)