设计模式
发展历史
建筑师克里斯托佛·亚历山大在1977/79年编制了一本汇集 设计模式 的书,但是这种设计模式的思想在建筑设计领域里的影响远没有后来在软件开发领域里传播的广泛。
肯特·贝克和沃德·坎宁安在1987年,利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了 设计模式 并把此思想应用在Smalltalk中的图形用户接口(GUI)的生成中。一年后埃里希·伽玛在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发。与此同时James Coplien 在1989年至1991年也在利用相同的思想致力于C++的开发,而后于1991年发表了他的著作 Advanced C++ Programming Styles and Idioms 。同年Erich Gamma 得到了博士学位,然后去了美国,在那与Richard Helm, Ralph Johnson ,John Vlissides 合作出版了《设计模式:可复用面向对象软件的基础》( Design Patterns - Elements of Reusable Object-Oriented Software ) 一书,在此书共收录了23个 设计模式 。
这四位作者在软件开发领域里以Gang of Four(简称GoF)而闻名,并且他们在此书中的协作导致了软件设计模式的突破。有时,GoF也会用于代指《设计模式》这本书。
表述格式
表述一个软件设计模式的格式根据作者的不同,划分和名称等都会有所不同。常用的GoF描述模式的格式大致分为以下这些部分:
模式名:每一个模式都有自己的名字,模式的名字使得我们可以讨论我们的设计。
问题:在面向对象的系统设计过程中反复出现的特定场合,它导致我们采用某个模式。
解决方案:上述问题的解决方案,其内容给出了设计的各个组成部分,它们之间的关系、职责划分和协作方式。
别名:一个模式可以有超过一个以上的名称。这些名称应该要在这一节注明。
动机:在哪种情况使用该模式,是本节提供的方案(包括问题与来龙去脉)的责任。
适用性:模式适用于哪些情况、模式的背景等等。
结构:这部分常用类图与交互图阐述此模式。
参与者:这部分提供一份本模式用到的类与对象清单,与它们在设计下扮演的角色。
合作:描述在此模式下,类与对象间的交互。
影响:采用该模式对软件系统其他部分的影响,比如对系统的扩充性、可移植性的影响。影响也包括负面的影响。这部分应描述使用本模式后的结果、副作用、与权衡(trade-off)
实现:这部分应描述实现该模式、该模式的部分方案、实现该模式的可能技术、或者建议实现模式的方法。
示例:简略描绘出如何以编程语言来使用模式。
已知应用:业界已知的实现示例。
相关模式:这部分包括其他相关模式,以及与其他类似模式的不同。
分类
《设计模式》一书原先把设计模式分为创建型模式、结构型模式、行为型模式,把它们通过授权、聚合、诊断的概念来描述。若想更进一步了解关于面向对象设计的背景,参考接口模式、内聚。若想更进一步了解关于面向对象编程的背景,参考继承,接口,多态。
参阅
设计范例
反模式,对某个问题经常出现的、在设计中应该尽量避免的、坏的设计方案。
模式挖掘
软件重构
程序设计实践
参考资料
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides: Design Patterns , Addison-Wesley, 1995, hardcover, 395 pages, ISBN 978-0-201-63361-0, Design Patterns CD , 1997 ISBN 978-0-201-63498-3
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-oriented Software Architecture, Volume 1: A System of Patterns , John Wiley & Sons Ltd., ISBN 978-0-471-95869-7
Douglas Schmidt: Pattern-oriented Software Architecture. Volume 2: Patterns for Concurrent and Networked Objects , John Wiley & Sons Ltd., ISBN 978-0-471-60695-6
Alan Shalloway, James R. Trott: Design Patterns Explained: A New Perspective on Object-Oriented Design , Addison-Wesley, ISBN 978-0-201-71594-1
Martin Fowler: Patterns of Enterprise Application Architecture , Addison-Wesley, ISBN 978-0-321-12742-6
设计模式列表.
mgrand的书介绍了许多模式
hillside.net模式目录
设计模式会通
设计模式工具箱
C#面向对象设计模式纵横谈系列课程
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值