1 / 12
文档名称:

设计模式总结.docx

格式:docx   大小:1,275KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

设计模式总结.docx

上传人:63229029 2017/1/12 文件大小:1.25 MB

下载得到文件列表

设计模式总结.docx

相关文档

文档介绍

文档介绍:七大设计原则: 单一职责原则( SRP ): 对于一个类,应该只有一个导致其变化的原因。涉及模式: 门面、 Proxy 开闭原则( OCP ): 设计一个模块时,应该使该模块在不被修改的前提下被扩展,即可在不必修改源代码的情况下改变该模块的行为。对扩展开放,对更改封闭。抽象化是关键。涉及模式: S tr ategy , Simple Factory, Factory Method, Abstract Factory, Builder, Bridge, 门面, Mediator . 里氏替换原则( LSP ): 一个软件实体如果使用的是一个基类的话, 一定适用于其子类, 而且根本不能觉察出基类对象和子类对象的区别。(在软件中如果能够使用基类对象,那么一定能够使用其子类对象) 尽量从抽象类继承而不从具体类继承;如果两个具体类 A和B 有继承关系,那么最简单的是建立一个抽象类 C ,让 A和B 成为 C 的子类;如果有一个由继承关系形成的等级结构,则所有树叶节点应该是具体类而所有树枝节点应该是抽象类或接口。涉及模式: Strategy , Composite, Proxy 依赖倒置原则( DIP ): 高层模块不应该依赖低层模块, 它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。针对接口编程,不要针对实现编程。关键是以抽象方式耦合。涉及模式: Factory Method, Prototype, Iterator. 接口隔离原则( ISP ): 使用多个专门的接口比使用单一的总接口要好。不应该强迫客户依赖于他们不用的方法; 一个类的不内聚的“胖接口”应该被分解为多组方法, 每一组方法都服务于一组不同的客户程序。涉及模式: Mem ento, Iterator. 组合/ 聚合复用原则( CARP ): 尽量使用组合/ 聚合,而不要使用继承。继承是类型复用, 白箱复用, 使得超类的细节被暴露给子类, 当超类修改时, 子类也被迫修改;组合/ 聚合可以将已有的对象纳入到新对象中,使之成为新对象的一部分,因此新对象可以调用已有对象的功能,是黑箱复用。如果两个类是“ Has-a ”关系而非” Is-a ”关系,但设计成继承,肯定违反 LSP 。迪米特法则( LoD ): 一个对象应该对其他对象又尽可能少的了解。(不要和陌生人说话) 狭义: 如果两个类不必彼此直接通信, 那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法, 可以通过第三者转发这个调用。广义: 对对象之间的信息流量、流向以及信息的影响进行控制;充分体现封装的概念。基本原则: 只跟直接依赖的对象通信( 不要耦合没有明显通信需求的 2 个对象) 涉及模式:门面、 Mediator . GRASP 核心是自己干自己能干的事, 自己只干自己的事, 也就是职责的分配和实现高内聚。 GRAS P 是对象职责分配的基本原则。包括 9个模式: 1) Information Expert 信息专家将责任分配给信息专家,信息专家是指具有履行职责所需信息的类(实现高内聚)。信息专家模式是面向对象设计的最基本原则。优点: 信息的拥有者类同时就是信息的操作者类,可以减少不必要的类之间的关联;各类的职责单一明确,容易理解。满足了面向对象设计的封装的思想。对应于面向对象设计原则中的单一职责原则。 2) Creator 创建者谁来创建? 当以下条件之一为真时,将创建类 A 实例的职责分配给类 B: B 容纳 A;B 聚集 A;B 具有 A 的初始化数据; B 记录 A;B 频繁使用 A。优点: 整个结构清晰易懂; 有利于类或组件的重用; 防止职责的分散;降低耦合性。与各种工厂模式相对应( 简单工厂、工厂方法、抽象工厂) 3) Low coupling 低耦合如何减少变化所产生的影响? 责任的分配要使( 不必要的) 耦合保持最低。耦合主要指不同类之间相互关联的紧密程度, 应该以降低类之间的耦合关系作为职责分配的原则。 4) Hig h cohesion 高内聚如何保持对象有重点、可理解和可管理,同时还要支持低耦合的作用? 责任的分配要保持高内聚。紧密相关的功能( 职责) 应该分配给同一个类。低内聚的类存在难以被理解和维护, 难实现类的重用, 系统脆弱不断需要修改的缺点(难理解、难复用、难维护、脆弱) 高内聚优点: 可表现关联责任的一个抽象,易于实现类的重用; 使维护工作变得简单; 使得系统模块化工作,方便团队工作。模式优点: 聚集相关功能, 结构清晰, 容易理解; 类的职责单一明确, 降低类的复杂程度, 使用简单, 有利于重用; 适应需求变化, 一旦发生变化时, 可以把影响缩小到最小范围。高内聚与低耦合模式是 GRASP 其他模式的根本。 5) Controller