2009年是设计模式 出版15年之际,程序员杂志2009.12推出了设计模式15年特别专题。一些关于设计模式的评论摘抄如下:
设计模式提供了更高层次的抽象
软件开发的的发展史,本质上是程序抽象层次随软件复杂度不断提升。语言、方法、过程、或平台都体现出这个趋势。设计模式也是沿着这个路线出来的。
设计模式提供了更高层次的抽象。但是不容易在代码中直观的体现,所以要用UML这样可视化图形描述语言进行描述。
类、模式作为软件开发的基本抽象层而为大家认为是理所当然的。我们关注的重点,已经从局部抽象的本身转移到不同抽象间的分解、协调、平衡和责任划分上去了。
代码中心论和设计中心论都是错误的,必须在两者之间找到平衡点。
复杂的层次发生了变化
复杂的层次发生了变化。可复用软件已经以工具包或者框架的形式,迁移到底层系统、语言中去了。绝大部分应该交给专家负责。对于大多数软件开发者来说,学习设计模式的意义在于:1)应用于重构;2)有益于了解框架。
我们关注的重点转移到了如何用模式表示自己的思想
GoF真正的贡献在于对已有各种设计方法加以归纳、命名、定义和编目,清晰的列出一个包含23种设计模式的目录。
在面向对象领域,我们苦苦追求的重用,现在看起来就像失败的上帝。软件库、组件和框架没有真正成为软件重用的及时。倒是设计本身、设计模式、设计思想实现了重用。我们关注的重点转移到了如何用模式表示自己的思想。
要想真正理解一个模式,就必须深究其细节
要想真正理解一个模式,就必须深究其细节。根据过去的经验,结合当前的设计需求,考虑清楚如何具体应用这个模式。
任何设计模式都只是工具
任何设计模式都只是工具,正确使用这些工具是程序员的职责。局限性和适用性本身就是设计模式的一部分。
设计模式是语言缺陷的表现
设计模式是语言缺陷的表现?面向对象中的类给设计带来了限制,设计模式是为了解决面向对象语言的限制而产生的。表现力更强的高级语言,如函数式语言可以直接用语言的概念完成编程,消除编程模式。模式是一种人肉编译器,用于解决复杂的问题,这是一种坏味。
其它
Erich Gamma, Richard Helm, and Ralph Johnson talk to Larry O'Brien about Design Patterns