3.1 设计模式介绍
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四⼈合著出版了⼀本名为
Design Patterns - Elements of Reusable Object-Oriented Software
(中⽂译名:设计模式 - 可复⽤的⾯向对象软件元素) 的书,该书⾸次提到了软件开发中设计模式的概念。四位作者合称
GOF(四⼈帮,全拼 Gang of Four)。
设计模式
****(Design pattern)是⼀套被反复使⽤、多数⼈知晓的、经过分类编⽬的、代码设计经验的总结
。使⽤设计模式是为了可重⽤代码、让代码更容易被他⼈理解、保证代码可靠性。 毫⽆疑问,设计模式于⼰于他⼈于系统都是多赢的,设计模式使代码编制真正⼯程化,设计模式是软件⼯程的基⽯,如同⼤厦的⼀块块砖⽯⼀样。项⽬中合理的运⽤设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每⼀个模式描述了⼀个在我们周围不断重复发⽣的问题,以及该问题的核⼼解决⽅案,这也是它能被⼴泛应⽤的原因。
- 创建型模式:对象实例化的模式,创建型模式⽤于解耦对象的实例化过程。
- 结构型模式:把类或对象结合在⼀起形成⼀个更⼤的结构。
- ⾏为型模式:类和对象如何交互,及划分责任和算法。
** 开闭原则(Open Closed Principle,OCP)** 由勃兰特 · 梅耶(Bertrand Meyer)提出,他在1988 年的著作《⾯向对象软件构造》(Object Oriented Software Construction)中提出:
软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification)。
** ⾥⽒替换原则(Liskov Substitution Principle,LSP)** 由麻省理⼯学院计算机科学实验室的⾥斯科夫(Liskov)⼥⼠在 1987 年的 “⾯向对象技术的⾼峰会议”(OOPSLA)上发表的⼀篇⽂章《数据抽象和层次》(Data Abstraction and Hierarchy)⾥提出来的,她提出:
继承必须确保超类所拥有的性质在⼦类中仍然成⽴(Inheritance should ensure that any property proved about supertype objects also holds for subtype objects)
。
- ** 任何基类可以出现的地⽅,⼦类⼀定可以出现,只有当派⽣类可以替换掉基类,软件功能不受影响时,基类才能真正被复⽤,** ⽽派⽣类也能够在基类的基础上增加新的⾏为。
** 依赖倒置原则(Dependence Inversion Principle,DIP)** 是 Object Mentor 公司总裁罗伯特 · ⻢丁(Robert C.Martin)于 1996 年在
C++
Report 上发表的⽂章。依赖倒置原则的原始定义为:
⾼层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should depend upon
abstractions.Abstractions should not depend upon details. Details should depend upon
abstractions)
。其核⼼思想是:要⾯向接⼝编程,不要⾯向实现编程。
- ⾼层不应该依赖低层,要⾯向接⼝编程。在⾼层和底层之间插⼊⼀层抽象层,屏蔽底层细节,向上层提供统⼀的接⼝。
单⼀职责原则(Single Responsibility Principle,SRP)⼜称单⼀功能原则,由罗伯特 ·C. ⻢丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》⼀书中提出的。这⾥的职责是指类变化的原因,单⼀职责原则规定⼀个类应该有且仅有⼀个引起它变化的原因,否则类应该被拆分(There should never be more than one reason for a class to change)
。
** 接⼝隔离原则(I
创建型设计模式详解

最低0.47元/天 解锁文章
575

被折叠的 条评论
为什么被折叠?



