Design Pattern---(5)Singleton Pattern单件模式
单件模式:确保一个类只有一个实例,并提供一个全局访问点
1 package Singleton; 2 3 public class Singleton { 4 5 //volatile关键字确保当uniqueInstance变量被初始化成Singleton实例后, 6 //多个线程能够正确地处理uniqueInstance变量 7 private volatile static Singleton uniqueInstance; 8 9 private Singleton() {} 10 11 //double-checked locking双重加锁。只有第一次会同步。 12 public static Singleton getInstance(){ 13 if(uniqueInstance == null) { 14 synchronized(Singleton.class){ 15 if(uniqueInstance == null){ 16 uniqueInstance = new Singleton(); 17 } 18 } 19 } 20 return uniqueInstance; 21 } 22 }
关键:一个私有的构造方法,一个静态方法和一个静态变量。
注意问题:解决多线程问题(synchronized方法,eagerly Instantiation,双重加锁)