首页 新闻 会员 周边

关于单例模式的问题

0
悬赏园豆:10 [已解决问题] 解决于 2016-11-08 10:04

始终无法参透单例模式的用处。有没有人能举个没使用单例模式 带来的坏处!举个反例告诉我,或者正面讲详细一点! 谢谢诶

Leo96的主页 Leo96 | 初学一级 | 园豆:166
提问于:2016-10-12 21:59
< >
分享
最佳答案
1

没有单纯存在的好处和坏处 一般都是放开了 放到固定的业务场景来看的

单例模式至少解决了2个问题

1.并发处理

2.实例唯一

 

并发问题带来的好处 这里就不用多说了 

实例唯一带来的好处 就如楼上说的 如果想通过一个对象全局控制一些事情 如果有多个实例 就很难控制 例如:统计

 

模式带来的优越性是 固定的写法 解决固定的问题(一个萝卜一个坑 相当于标准化吧) 而且这个是经由前人实践过的 可以减少试错的风险

收获园豆:10
小眼睛老鼠 | 老鸟四级 |园豆:2731 | 2016-10-13 17:30
其他回答(4)
0

1、正常假如你自己用,其实用静态类就可以了。

2、用了别人的库里面的一个非静态类,这时候 你不想每次都声明,但是呢,所有的地方又都需要用这同一个对象,因为里面保持了一些状态或者进程锁之类的东西,这时候 你就需要自己包一层让它跟静态类类似,这种情况什么单例便可以了。

3、自己写的类,但是,并不是只需要一个,而是一个或两个,也就是说,希望存在个数一定的“静态类”,每一个是不一样的,这种静态与非静态混合的类,你需要用单例 。

ensleep | 园豆:1682 (小虾三级) | 2016-10-13 08:53
0

参考一下:

http://csharpindepth.com/Articles/General/Singleton.aspx

qingYun | 园豆:43 (初学一级) | 2016-10-13 09:05
0

比如你有一个可实例化的计数器,在你实际使用场景中希望对整个应用的调用数做记录,那么这里你需要用单例去解决由于并发导致的多次实例化计数器最终致使计数不准的问题。

再比如一个可实例化的对象,其本身包含状态(如里面包含一个实例字段)。但你实际应用场景下期望这个状态信息仅供一个回话的上下文中使用,那么这里如果用单例就会出现其他回话也会读取到当前回话的状态信息导致最终计算出现错误。

因此是否使用单例简单判断就依赖于其对象中是否包含状态且是否需要进行共享。

Daniel Cai | 园豆:10424 (专家六级) | 2016-10-13 09:31
0

看看这个对你有帮助没有:.NET设计模式(1):1.1 单例模式(Singleton Pattern)

CodeHsu | 园豆:5468 (大侠五级) | 2016-10-13 09:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册