设计模式之单例模式
设计模式之单例模式
核心:构造方法私有化
非线程安全饿汉式单例模式:可能出现非单例情况。
public class SingleInstatnceTest {
public static void main(String[] args) {
SingleInstatnce s1 = SingleInstatnce.getInstance();
SingleInstatnce s2 = SingleInstatnce.getInstance();
System.out.println(s1.equals(s2));
}
}
class SingleInstatnce{
private static SingleInstatnce singleInstatnce= null;
private SingleInstatnce() {
}
public static SingleInstatnce getInstance(){
if (singleInstatnce == null) {
singleInstatnce = new SingleInstatnce();
}
return singleInstatnce;
}
}
线程安全饿汉式单例模式(常用):
public class SingleInstatnceTest {
public static void main(String[] args) {
SingleInstatnce s1 = SingleInstatnce.getInstance();
SingleInstatnce s2 = SingleInstatnce.getInstance();
System.out.println(s1.equals(s2));
}
}
class SingleInstatnce{
private static SingleInstatnce singleInstatnce= null;
private SingleInstatnce() {
}
public static SingleInstatnce getInstance(){
if(singleInstatnce == null) {
synchronized (SingleInstatnce.class) {
if (singleInstatnce == null) {
singleInstatnce = new SingleInstatnce();
}
}
}
return singleInstatnce;
}
}
懒汉式单例模式(少用):
public class SingleInstatnceTest {
public static void main(String[] args) {
SingleInstatnce s1 = SingleInstatnce.getInstance();
SingleInstatnce s2 = SingleInstatnce.getInstance();
System.out.println(s1.equals(s2));
}
}
class SingleInstatnce{
private static SingleInstatnce singleInstatnce= new SingleInstatnce();
private SingleInstatnce() {}
public static SingleInstatnce getInstance(){
return singleInstatnce;
}
}