23之单例模式

这是写的第一个,为什么呢?只因为耳熟能详。当然对于单例模式来说还分好几种,不多说,只是简单的懒汉饿汉吧。

1.饿汉式(大部分情况下这一种又安全又好用)

public class Singleton {
    private static Singleton singleton= new Singleton();
    private singleton() {
    }
    public static Singleton newInstance() {
        return singleton;
    }
}

2.懒汉式(延迟加载,多线程初次有不安全的风险)

public class Singleton{
    private static Singleton singleton;
    private Singleton() {
    }
    public synchronized static Single newInstance() {
        if (singleton== null) {
            singleton= new Singleton();
        }
        return singleton;
    }
}

3、双重检查加锁

public class Singleton {
    private volatile static Singleton singleton;
    private Singleton() {
    }
    public static Singleton newInstance() {
        if (singleton == null) {
            synchronized (Singleton.class) {
                if (singleton == null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}

这个是懒汉形式的加强版,将synchronized关键字移到了newInstance方法里面,同时将singleton对象加上volatile关键字,这种方式既可以避免多线程问题,又不会降低程序的性能。但volatile关键字也有一些性能问题,不建议大量使用。

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
菜鸟教程单例模式

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容