GOF定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
要点:
1.构造器必须是私有的(被private修饰)。
2.小心地选择适当的方案来实现单件,以解决多线程的问题(我们必须认定所有的程序都是多线程的)。
java代码示例:
public class Singleton {
private static Singleton singleton;
private Singleton() {}
/**单线程**/
public static Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
/**多线程**/
public static Singleton getInstanceT() {
if(singleton == null) {
/**加锁**/
synchronized(Singleton.class){
/**多线程中指令重排序问题**/
Singleton temp = singleton;
if (temp == null) {
temp = new Singleton();
singleton = temp;
}
}
}
return singleton;
}
}