代码改变世界

充分认识单态模式

2008-12-10 23:16  hbb  阅读(337)  评论(0)    收藏  举报
作为一个面向过程编程者在转向面向对象编程,并逐渐开始接触设计模式时。我敢说最上手的一个模式就是单态模式(迭代器就别当他是模式了吧...)
他是一个设计模式,但在使用起来又那么的方便。完全没有其他,如工厂模式、策略模式那样的“费劲”。但也正因为如此,这个模式已经快被否定成项目程序中的“罪魁祸首”了,就连当初他的创造者GoF的一员Eric Gamma,也对此提出了怀疑。Google甚至推出了一款JAVA版的“专杀工具”。

这里有篇文章里实现单态模式说起,给出了大量链接,总的是持否定的态度。

而概括下来主要是两点

第一,单态模式就是一个披着设计模式的全局变量。
第二,单态模式从一开始就破坏了几个OOP的原则(如,单一责任原则,摒弃紧耦合原则)。

并且从实际的程序编写和单元测试角度,解析了单态模式是如何的让人无奈至于抓狂。


其实单态模式并没有坏到人人唾弃的份上,至少他的存在能解决一定的问题。
在我看来,还有另一层用处,即给那些想OOP但又怕OOP的人一个低阶的门槛。
我也是在大量的使用单态模式后,发现问题,寻求新的出路,然后一步一步走上来的。如果一开始就从面向过程转向MVC,是肯定不行的。

任何模式都有好坏、取舍的环境。单态模式这些弊端,可能平时不太注意。提出来的目的是要更了解他,而不是否定他。