Singleton Pattern
Ensure a class has only one instance,and provide a global point of access to it .
单例模式的几个要点:
- 私有的构造器。禁止外部使用new关键字得到实例对象。
- 通过getInstance()得到实例对象。
- getInstance方法的内部逻辑
- 类中实例对象的地方
public class Boy {
private static Boy boy;
private volatile static Object initLock = new Object();
private Test(){}
public static Boy getInstance(){
if (boy == null) {
//1、如果有boy返回boy,如果没boy到2。
//2、查看线程锁:如果initLock被锁了就等待;如果initLock没有锁就继续3并且给initLock加锁。
//3、如果有t返回t,如果没t就new Test()。
synchronized (initLock) { //synchronized锁的是固定对象
if (t == null) {
t = new Test();
}
}
}
return t;
}
}
public class Demo {
public static void main(String[] args) {
Boy boy = Boy.getInstance();
}
}