单例模式

单例模式(5种)

单例模式 : 一个只有单一对象的类

  1. 饿汉式 空间性能低
    class A{
    private static final A instance = new A();
    public static A newInstance() {
    return instance;
    }
    private A(){}
    }
  2. 懒汉式 时间性能低
    class B{
    private static B instance = null;
    public static synchronized B newInstance() {
    if (instance == null) instance = new B();
    return instance;
    }
    private B() {}
    }
  3. 融合饿汉式和懒汉式的优点
    class C{
    private static class Holder{
    static final C instance = new C();
    }
    public static C newInstance() {
    return Holder.instance;
    }
    private C() {}
    }
  4. 双重检查锁
    public class Singleton {
    private volatile static Singleton singleton;
    public Singleton() {
    }
    public static Singleton getInstance() {
    if (singleton == null) {
    synchronized (Singleton.class) {
    if (singleton == null) {
    singleton = new Singleton();
    }
    }
    }
    return singleton;
    }
    }
  5. 枚举式
    线程安全,调用效率高,但是不能延时加载,但是可以天然的防止反射和反序列化漏洞**
    public enum SingletonDemo4 {
    //这个枚举对象本身就是单例对象
    INSTANCE;
    //添加自己需要的操作
    public void operation(){
    }、
    }

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。