标签:des style blog http strong io 问题 cti
好奇设计模式的源头,做了一番搜索和调查,于是便开启了这个系列“PrintJ的设计模式之旅”。
Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides合著了"Design Patterns: Elements of Reusable Object-Oriented Software"(中文版《设计模式 : 可复用面向对象软件的基础》)
。这四位大神是公认的设计模式之父。
但是,大神们又是受到了谁的启发,基于什么动机去开始这项“伟业”呢?是他们发明了设计模式还是发现了设计模式呢?
带着这两个问题,找到了下面这位大神。
C.亚历山大——加州大学伯克利分校建筑学教授,环境结构中心负责人,写了"The Timeless Way of Building : Way of Building"一书(中文版《建筑的永恒之道》)。正式这本书激发了软件行业对模式的思索。
亚历山大要解决建筑设计问题。假设你要建一所大学,必须向学生和老师解释你的设计,
由于无法将设计向所有的参与者一一解释清楚,于是你会看到一个巨大的瓦砾堆。
“如何将设计的职责在一个大型组织中进行合理分配,与此同时保证整体设计的一致性与协调性?”
这个问题同样适用于软件开发。
亚历山大提出了“模式语言”——涵盖设计决策的一组辞典。
"A Pattern Language : Towns, Buildings, Construction"(中文版《建筑模式语言(上下) : 城镇·建筑·构造》)
书中提到了超过250个示例,通过模式语言可以进行设计交流。所有的讨论都基于同样的基础,提升了设计通用性。
GOF的23种设计模式在当时无疑是一种巨大的进步,但同时也有一些局限,比如编程语言。于是产生了一些对设计模式的争论:
这里不做口水式的争论,有兴趣的看官可以参考附录中的文章。
个人觉得Jeff Atwood的建议还是挺中肯的:
学习设计模式没有问题,但务必更加深入地读懂建筑模式语言。毕竟,思考比代码更重要。
看了这么多设计模式“负面”的内容一定会有所怀疑吧。让我们再回到GOF,Eric Gamma作为先驱参与了Eclipse的设计。
虽然Eclipse中,GOF23种设计模式的痕迹已不再清晰,但Eclipse的生机勃勃说明了“模式”未死。
下一篇,我会循着GOF的足迹,带着亚历山大的精神继续设计模式之旅。
PrintJ的设计模式之旅——1.模式之父,布布扣,bubuko.com
标签:des style blog http strong io 问题 cti
原文地址:http://www.cnblogs.com/printj/p/3875543.html