如果让你写一个单例模式的案例,你会怎么写,在我的印象中单例模式嘛,本意就是在这个容器中,只能存在一个类的实例,然后我会这么写:
public class SingleTest {
private static final SingleTest single = new SingleTest();
private SingleTest(){}
public SingleTest instance(){
return single;
}
}
或者是下面这样
public class SingleTest {
private static SingleTest single;
private SingleTest(){}
public SingleTest instance(){
if(single==null) {
single = new SingleTest();
}
return single;
}
}
不过,我还需要注意线程安全问题,我们采用双重检查的方式来解决它
public class SingleTest {
private static SingleTest single;
private SingleTest(){}
public SingleTest instance(){
if(single==null) {
synchronized (SingleTest.class) {
if(single==null) {
single = new SingleTest();
}
}
}
return single;
}
}