设计模式之单例设计模式

单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。(大话设计模式)

单例模式网上十来种,在这里主要介绍三种线程安全的单例模式。

第一种:饿汉式。


public
class Singleton {
//全局变量
private static Singleton singleton=new Singleton();
   //构造方法私有
private Singleton(){}
//提供公共方法
public Singleton getSingleton(){ return singleton; } }

第二种:静态内部类。

public class Singleton{
    private Singleton(){}
    private static class InnerClass{
        public static final Singleton instance= new Singleton();
    }
    public static Singleton getSingleton(){
        Singleton singleton = InnerClass.instance;
        return singleton;
    }
}

第三种:基于CAS的实现。

public class Singleton {
    private static final AtomicReference<Singleton> singleton = new AtomicReference<>();
    private Singleton() {
    }
    public static Singleton getSingleton() {
        for (; ; ) {
            Singleton single = Singleton.singleton.get();
            if (null != single) {
                return single;
            }
            single = new Singleton();
            if (singleton.compareAndSet(null, single)) {
                return single;
            }
        }
    }
}

 

第三种是借鉴的Hollis的个人公众号(hollischuang)。

posted @ 2017-09-27 17:22  emoji的博客  阅读(113)  评论(0编辑  收藏  举报