设计模式之单例

2017-04-07  本文已影响4人  smallstrong

单例模式

单例UML.png
  1. 一般私有化构造函数
  2. 通过一个静态方法来获取唯一单例对象

两个例子

静态内部类单例模式

public class Singleton{
    private Singleton(){
        //私有构造方法
    }
    
    public static Singleton getSingleton(){
        //当方法被调用之后,其实SingletonHolder的构造方法没有被调用(亲测)
        return SingletonHoler.singleton;
    }
    //静态内部类
    priveta static class SingletonHolder{
        //唯一单例
        private static final Singleton singleton = new Singleton();
    }
}

枚举模式

public enum Singleton{
    INSTANCE;//恩,这就是单例
}   

懒汉模式

public class Singleton{
    private static Singleton singleton;
    private Singleton(){
        //私有构造方法
    }
    
    public static synchronized Singleton getInstance(){
        if(singleton == null){
            singleton = new Singleton();
        }
        return singleton;   
    }
}

饿汉模式

public class Singleton{
    private static final Singleton singleton = new Singleton();
    private Singleton(){
        //私有构造方法
    }
    public static Singleton getInstance(){
        return singleton;
    }
}
上一篇下一篇

猜你喜欢

热点阅读