单例模式之最简方式

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

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

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

懒汉式(一见钟情)

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>第一章,第三条,用私有构造器或者枚举类型强化单例模式

 

 

转载于:https://my.oschina.net/ohalo/blog/886174

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值