标签:设计模式
设计模式public class Singleton { //利用一个静态变量来记录Singleton类的唯一实例 private static Singleton uniqueInstance; //把构造器声明为私有,没有公开的构造器,避免了产生多个实例。需要获得实例时,调用Singleton.getInstance(). private Singleton() { } //静态方法,是一个“类”的方法。引用一个静态方法,只需要使用类名,不需要对象名 public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } }
public class Singleton { private static Singleton uniqueInstance; private Singleton() { } //增加synchronzed关键字到该方法中,迫使每个线程进入这个方法之前,要先等候别的线程离开该方法。 public static synchronzed Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } }
public class Singleton { //在静态初始器中定创建单件。这段代码保证了线程安全 private static Singleton uniqueInstance = new Singleton(); private Singleton() { } public static Singleton getInstance() { //已经有了实例,直接使用 return uniqueInstance; } }
public class Singleton { //volatile关键字确保当uniqueInstance变量被初始化成Singleton实例时,多个线程正确的处理该变量 private volatile static Singleton uniqueInstance; private Singleton() { } public static Singleton getInstance() { //检查实例,如果不存在,就不进入 if (uniqueInstance == null) { synchronized (Singleton.class) { //进入区块后再检查一次。如果仍是null,才创建实例。 if (uniqueInstance == null) { uniqueInstance = new Singleton(); } } } return uniqueInstance; } }
《Head First 设计模式》学习笔记——单件模式,布布扣,bubuko.com
标签:设计模式
原文地址:http://blog.csdn.net/huaxi1902/article/details/27987107