设计模式-学习笔记_代码.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式学习笔记-麻继钧 设计模式学习笔记  单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制 这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破 坏。 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。  开放-封闭原则 软件实体(类、模块、函数等)应该可以扩展,但是不可以修改。 对于扩展是开放的,对于修改是封闭的。 开发人员应该对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都 刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。  依赖倒转原则 高层模块不应该依赖底层模块。两个都应该依赖抽象。 抽象不应该依赖细节。细节应该依赖抽象。 其实就是针对接口编程,不要对实现编程。 依赖倒转其实可以说是面向对象设计的标志,用那种语言编写程序不重要,如果编写时考虑的都是 如何针对抽象编程而不是针对细节编程,就程序中所有的依赖关系都是终止于抽象类或者接口,那就是 面向对象的设计,反之就是过程化的设计了。  里氏代换原则 子类型必须能够替换掉他们的父类型。 一个软件实体如果使用的是一个父类的话,那么一定适用其子类,而且它察觉不出父类对象和子类 对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。 只有当子类可以替换掉父类,软件单位的功能不受到影响,父类才能真正被复用,而子类也能够在 父类的基础行为上增加新的行为。  合成/聚合复用原则 尽量使用合成/聚合,尽量不要使用继承。 聚合表示一种“弱”的拥有关系,体现的是A 对象可以包含B 对象,但B 对象不是A 对象的一部 分;合成则是一种“强”的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。  迪米特法则 (最少知识法则)如果两个类不必被此直接通信,那么这两个类就不应当发生直接的 相互作用。如果其中一个类要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 在类的设计上,每一个类都应当尽量降低成员的访问权限。 迪米特法则的根本思想,是强调了类之间的松耦合。类之间的耦合越弱,越有利于复用,一个处在 弱耦合的类被修改,不会对有关系的类造成波及。 第 1 页 共 39 页 设计模式学习笔记-麻继钧 1. 抽象工厂 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 第 2 页 共 39 页 设计模式学习笔记-麻继钧 优点:①、易于交换产品系列,由于具体工厂类在一个应用中只需要在初始化的时候出现一次,这 就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。②、 二是它让具体的创建实例过程与客户端分离,客户端是通过他们的抽象接口操纵实例,产品的具体类名 也被具体工厂的实现分离,不会出现在客户代码中。 第 3 页 共 39 页 设计模式学习笔记-麻继钧 2. 建造者 定义:将一个复杂对象的构建与它的表示部分分离,使得同样的构建过程可以创建不同的表示。 第 4 页 共 39 页 设计模式学习笔记-麻继钧 Builder 是为创建一个Product 对象的各个部件指定的抽象接口。 ConcreteBuilder 是具体建造者,实现Builder 接口,构造和装配各

文档评论(0)

feiyang66 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档