Creative Commons License
本Blog采用 知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议 进行许可。 —— Fox <游戏人生>

游戏人生

游戏人生 != ( 人生 == 游戏 )
站点迁移至:http://www.yulefox.com。请订阅本博的朋友将RSS修改为http://feeds.feedburner.com/yulefox
posts - 62, comments - 508, trackbacks - 0, articles - 7

设计模式(三)——Singleton

Posted on 2008-11-19 23:37 Fox 阅读(1971) 评论(4)  编辑 收藏 引用 所属分类: T技术碎语

不知道Singleton算不算用的最多的,平时用的时候,往往都是直接敲下面一段:

……

不是不想改,就是懒,敲多了已经不觉得这么写多浪费时间了,按大家的说法,这样写至少有这么几个缺点:

1. 必须在程序结束前手动释放,这不仅是RP问题,如果你借了内存不主动还,说明你RP差,但被别人搞丢了(宕机)导致你还不上,说明别人RP差?所以,这还是个问题;

2. 线程同步问题,如果Singleton实例跨线程使用,上例不安全,在Initial和Release时加锁可以解决;

3. 最大的问题:不能重用。

阅读全文

Feedback

# re: 设计模式(三)&mdash;&mdash;Singleton[未登录]  回复  更多评论   

2008-11-20 18:21 by 111
史上最烂单例!

# re: 设计模式(三)&mdash;&mdash;Singleton  回复  更多评论   

2008-11-20 20:15 by Andy go Andy go go
没必要使用Initial, Release吧。是类的使用变得复杂,而且容易出错。
提供一个getSingleton接口就错不多了, 另外,如果要在多线程中使用,可以使用
Singleton模式的变体—Double-checked locking模式。

# re: 设计模式(三)&mdash;&mdash;Singleton  回复  更多评论   

2008-11-20 21:20 by Fox
麻烦大家“阅读全文”后回复,谢谢:D

# re: 设计模式(三)&mdash;&mdash;Singleton  回复  更多评论   

2009-08-17 19:28 by 李现民
我的理解是:singleton要少用,它就是全局变量;没有必要搞太复杂,使用一个局部静态变量就可以了

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理