JAVA设计模式(一)——单例模式

JAVA设计模式(一)——单例模式,第1张

JAVA设计模式(一)——单例模式

  单例模式共分为三种方式、饿汉式、懒汉式、枚举方式等,每种方式都有各自的特点:

方式优点缺点是否推荐   使用场景饿汉式无线程安全问题可能造成内存浪费、无懒加载效应推荐  源码Runtime类中使用了饿汉式懒汉式懒加载有线程安全问题推荐   枚举方式简单、无线程安全问题 推荐 

饿汉式实现方式:

//方式一  静态常量方式
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;
}

  以上几种方式,都算是比较完美的,项目中可以正常使用,懒汉式采用静态内部类的方式解决了线程安全的问题以及懒加载等,还有其余几种懒汉式的方式,比如双重锁等方式,个人不推荐,最推荐的方式是使用枚举。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5673146.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存