【设计模式】——单例

        单例模式在实际开发中比较常用,之前接触中只了解懒汉式和饿汉式,而单例的实现一共包含饿汉和懒汉在内一共是5中实现方式,为了一目了然部分实现直接上图片。

1、饿汉式(左侧)

2、懒汉式(右侧)


两者实现的不同,直接反应到使用上:

        ①饿汉式的实例,在类初始化时直接完成实例化,不支持延时加载,懒汉式相反。

        ②饿汉式的访问接口没有进行同步控制,所以调用效率高,懒汉式相反。


3、静态内部类



        静态内部类结合了饿汉和懒汉的优点:可延时、线程安全、调用效率高。


        ①可延时:对象的实例化放在了静态内部类中,类在进行初始化时不会执行到静态内部类,只有在调用getInstance()方法时才会执行静态内部类的方法,实现对象的实例化

        ②内部类的加载过程是天然线程安全的

        


4、枚举类实现单例


        优点:简单、线程安全、调用效率高。

        缺点:不能实现延时

5、Double Check


        缺点:JVM底层内部模型原因,偶尔会出问题,不建议使用(具体原因不详)。


总结

        频繁调用的建议使用调用效率高的,如果创建代价大建议使用可延时的。

        不需要延时的:枚举 好于 饿汉

        需要延时的:静态内部类 好于 懒汉式


可下载测试代码。(http://download.csdn.net/detail/u013030682/9884459)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值