设计模式之单例设计模式
单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。(大话设计模式)
单例模式网上十来种,在这里主要介绍三种线程安全的单例模式。
第一种:饿汉式。
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)。
知识的学习,要真诚与谦虚才不会有眼无珠,人生苦短,不能浪费时间做无用功。
人生学习最悲哀的不过是,因为无知傲慢错过真正的好东西,又因为无知贪婪在假东西上耗费生命。