大话设计模式----单例模式

一、单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

二、代码实例

public class Singleton {

    private static Singleton singleton;

    private Singleton(){}

    public static Singleton getInstance(){
        if(singleton == null){
            singleton = new Singleton();
        }
        return singleton;
    }
}

public class SingletonDouSync {

    private static SingletonDouSync singletonDouSync;

    private SingletonDouSync(){}

    public static SingletonDouSync getInstance(){
        if(singletonDouSync == null){
            synchronized (SingletonDouSync.class){
                if(singletonDouSync == null){
                    singletonDouSync = new SingletonDouSync();
                }
            }
        }
        return singletonDouSync;
    }
}

public class TestSingleton {

    @Test
    public void test1() {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
//        Singleton s = new Singleton(); 报错
        if (s1 == s2) {
            System.out.println("两个对象是同一个");
        } else {
            System.out.println("两个对象不一样");
        }
    }

    @Test
    public void test2(){
        SingletonDouSync singletonDouSync1 = SingletonDouSync.getInstance();
        SingletonDouSync singletonDouSync2 = SingletonDouSync.getInstance();
        if(singletonDouSync1 == singletonDouSync2){
            System.out.println("两个对象是同一个");
        }else {
            System.out.println("两个对象不一样");
        }
    }

}

三、分类

  懒汉单例类:在第一次被引用时,才会将自己实例化。

  饿汉单例类:在自己被加载时就将自己实例化。

猜你喜欢

转载自www.cnblogs.com/zsmcwp/p/12682404.html