SINGLETON的滥用

   自从知道了Singleton(参见GOF《设计模式》)这种模式之后,还没来得及有深入的理解,我就开始了对这个模式的滥用。
   各种地方,尤其是在涉及到提供底层服务的地方,我都喜欢使用Singleton,用以标榜“我这个只能有一个啊”。。。

    然而实际上,Singleton的使用应当慎之又慎——因为其实Singleton是全局变量的一种变体,而全局变量的使用会导致很严重的依赖性问题(可以参考Lokas《大规模C++程序设计》)。除非你真的能够确定这个对象系统中有且仅应有一份拷贝,而且能够肯定以后需要它的第二份拷贝的可能性非常低,否则都不要使用该模式。

    使用了Singleton之后,缺省的会提示使用者:系统中该对象仅此一家,别无分店,可以放心大胆的使用,我们可以保证你对它的改动对系统其它部分产生涟漪式影响。然而一旦你的决策错误,在未来的某个时刻发现,系统中需要除此而外的第二份拷贝,对该模式的任何修改都将对整个系统产生“地震”式的影响,甚至有时候你会无奈的发现,进行这样的改动简直是不可能的。

    这也可以说是Singleton自身的局限性之一,但更多的原因还是在于使用者的滥用,毕竟GOF已经提醒过我们了。再次以切身经历提醒大家,对Singleton的使用要慎重,当你没把握的时候还是不要用为妙。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值