单例模式之最简方式

原创
2017/04/24 16:54
阅读数 33

       写在之前的话,刚才我看了一篇关于单例模式的文章,上面写道了单例模式的两种实现方式,但是名字完全不叫懒汉式和饿汉式。而是叫青梅竹马和一见钟情,我觉得很形象啊,青梅竹马就是从小就在一起,很匹配。一见钟情就是刚开始没有对象,之后见一面就定了,觉得名字很好听还有形象在这里分享一下,然后上面还有一句话说的是:单例学得好,老婆少不了,我觉得吧,既然是单例了肯定就一个对象了,怎么可能有那么多老婆。

        总结:单例模式就是指:你就一个对象,不管咋样你就一个对象。不多不少就一个。                                                                                                  

在写那个单例最简方式之前,先把懒汉和饿汉式写出来

懒汉式(一见钟情)

public class Singleton{ 
    private Singleton(){}
    private static Singleton singleton = null;  //不建立对象
    public static synchronized Singleton getInstance(){
             if(singleton == null) {        //先判断是否为空                
                 singleton = new Singleton ();  //懒汉式做法 
             }
             return singleton ;
     }
    public void exec_method(){...}   
}

 

饿汉式(青梅竹马)

public class Singleton{ 
    public Singleton(){}
    private static Singleton singleton = new Singleton();  //建立对象
    public static Singleton getInstance(){
        return singleton ;//直接返回单例对象    
    }
    public void exec_method(){...}   
}

 

最简式(两小无猜)

public enum Singleton{ 
    INSTANCE;
    public void exec_method(){...}   

}

枚举实现,无偿地提供序列化机制,绝对防止多次实例化,即使在面对复杂的序列化或者反射攻击的时候。

虽然这种方法还没有广泛采用,但是单元素的枚举类型已经成为实现单例的最佳方法

这是在<effective java>第一章,第三条,用私有构造器或者枚举类型强化单例模式

 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部