(转载)关于设计模式
我对“设计模式”深恶痛绝(可能是因为我是从OMT开始了解OO的原因),OO其实是被设计模式给戕害了。
“设计模式”那套思路,是他先规定出一整套花架子在那里,然后从“腿怎么别在一起、手怎么钩着”之类的木偶一般方式教学。这是我想起了六、七十年带香港拍的哪些糟蹋中国传统功夫的电影中的南拳打斗场面。“设计模式”就是那种套路。然后中国功夫在内地实际上还有很多大家,例如武当、峨嵋、少林,根本不是那种蹶屁股摇头晃脑手脚伸出去就像棍子一样的所谓功夫。
-----------------------------------------------------------------------------
设计模式本身并无错,主要还是某些人将他的意思曲解了。
我看过的设计模式的书籍,开篇第一句话就是:每一种设计模式均有其适用场景,请不要为了符合某种设计模式而计划重新编写您的代码。原话我已经不太记得了,但是应该是这个意思。
但到了中国呢,设计模式就成了教条,成了圣经,成了规范,成了所有代码都必须遵守的标准,如果不按设计模式写,那就是妖孽,那就是垃圾,那就是谁都看不懂的,没有一点儿水平的,初级程序员写的垃圾代码。
胡说八道。
设计模式就是一本词典,里面详细介绍了每一种OOD的手法的具体实现,适用场合,以及好心人帮他取的一个名字。
有名字就好办了,中国人喜欢把一切概念性的东西变成题目和炫耀的资本,所以就有不少人嘲笑他人不明白什么叫工厂模式,有人头头是道的讲述工厂模式和抽象工厂的区别。
为设计模式取一个名字,愿意是便于程序员之间的沟通,就好比你到饭店中告诉服务员你想吃番茄炒蛋而不是让她将蛋放进锅中与番茄拌炒一样。因为你和她都明白番茄炒蛋指的是一个什么东西,这也就是设计模式的本意。
设计模式的本意,就是让程序员不必具体描述自己的实现手法,而是用诸如我这里使用的是工厂模式,我这里用策略模式来解决这个问题这样的话来简化沟通。
所以,设计模式本无罪,错的是这个行业的浮躁,这个行业的……