码迷,mamicode.com
首页 > 其他好文 > 详细

单件模式

时间:2015-05-14 18:27:02      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

第五个模式:单件模式

5.1问题引入:

有一些对象我们其实只需要一个,比方说:线程池,缓存,对话框,处理偏好设置和注册表的对象,日志对象,充当打印机、显卡等设备的驱动程序的对象。

5.2解决方案1:

技术分享

单件模式:确保一个类只有一个实例,并提供一个全局访问点

让我们来看看代码:getInstance()是静态的,这意味着它是一个类方法,所以可以在代码的任何地方使用Singleton.getInstance()访问它。这和访问全局变量一样简单,只是多了一个优点:单件可以延迟实例化。

缺点:会造成线程不安全!

技术分享

 

解决办法:只要把getInstance()方法编程同步的(synchronized)方法,多线程灾难几乎可以轻易地解决了;但是,只有第一次执行此方法时,才真正需要同步。换句话说,一旦设置好了uniqueInstance变量,就不再需要同步这个方法了。之后每次调用这个方法时,同步都是一种累赘。

解决办法:

1.如果getInstance()的性能对应用程序不是很关键,就什么都别做;

2.使用“急切”创建实例,而不用延迟实例化方法;

3.用“双重检查加锁”,在getInstance()中减少使用同步;

技术分享

单件模式

标签:

原文地址:http://www.cnblogs.com/maverick-fu/p/4503727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!