设计模式之单例模式

设计模式之单例模式

核心:构造方法私有化

非线程安全饿汉式单例模式:可能出现非单例情况。

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;
        
    }
}
posted @ 2021-04-14 11:31  愿半生代码如一生好友  阅读(42)  评论(0)    收藏  举报