《设计模式:可复用面向对象软件的基础》摘要(上)

第一章 引言
1、什么是设计模式?
设计模式是人们用来解决一些相似的问题和解决这类问题的核心方案。设计模式是用来实现设计复用的。
2、设计模式的四要素
名称:描述模式的问题、解决方案和效果。名称有助于人们之间交流设计思想和设计结果。
问题:描述了何时使用模式。它描述了设计问题以及问题存在的前因后果。
解决方案:描述了设计的组成部分,以及它们之间的相互关系、各自的职责和协作方式。
效果:描述了模式应用的效果及使用模式应权衡的问题。
3、本书如何描述一种设计模式?
  从以下方面来描述:模式名称和分类、意图、别名、动机、适用性、结构、参与者、协作、效果、实现、代码示例、已知应用、相关模式。
4、设计模式怎么样解决问题
  1)寻找合适的对象。对象包括数据和对数据的操作。设计模式帮你确定并不明显的抽象和描述这些抽象。
  2)决定对象的粒度。
  3)指定对象接口。接口是对象所提供的所有操作的集合。
  4)描述对象的实现。对接口编程,而不是对实现编程。
  5)运用复用机制。优先使用对象组合,而不是类继承。
  6)关联运行时刻和编译时刻的结构。
  7)设计应支持变化。一般会导致重新设计的因素:通过显示地指定一个类来创建对象、对特殊环境的依赖、对硬件和软件平台的依赖、对对象表示或实现的依赖、算法依赖、紧耦合、通过生成子类来扩充功能、不能方便地对类进行修改。
5、怎样选择设计模式
这里给出几个不同的方法:
  1)考虑设计模式是怎样解决设计问题的。
  2)浏览模式的意图部分。
  3)研究模式怎样互相关联。
  4)研究目的相似的模式。
  5)检查重新设计的原因。
  6)考虑你的设计中哪些是可变的。

第二章 实例研究
本章主要结合一个文本编辑器Lexi实例,来讲了几种设计模式的运用,已经为何选用这些设计模式。
如果没有接触过设计模式,咋一看这一章很难理解。可以先阅读后面的章节,然后回头看这一章,也许会有新的认识。

第三章 创建型模式
1、这些模式中的两个主旋律:它们都将关于该系统使用哪些具体的类的信息封装起来;它们隐藏了这些类的实例是如何被创建和放在一起的。
2、abstract factory 抽象工厂
2.1 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。工厂类创建接口,子类实现接口。
2.2 在以下情况下可以使用abstract factory模式:
  1)一个系统独立于它的产品的创建、组合和表示时。
  2)一个系统要由多个产品系列中的一个来配置时。
  3)当你要强调一系列相关的产品对象的设计以便进行联合使用时。
  4)当你提供一个产品类库,而只想显示它们的接口而不是实现时。
3、builder 生成器
3.1 意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
3.2 在以下情况使用该模式:
  1)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  2)当构造过程必须允许被构造的对象有不同的表示时。
3.3 与abstract factory的区别:build模式着重于一步步构造一个复杂对象,在最后一部返回产品;abstract factory着重于多个系列的产品对象(简单的或是复杂的),产品是立即返回的。
4、factory method 工厂方法
4.1 意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。该模式使一个类的实现延迟到其他子类。
4.2 在以下情况下可以使用该模式:
  1)当一个类不知道它所必须创建的对象的类的时候。
  2)当一个类希望由它的子类来指定它所创建的对象的时候。
  3)当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
5、prototype 原型
5.1 意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
5.2 当一个系统应该独立于它的产品创建、构成和表示时,要使用该模式,以及:
  1)当要实例化的类是在运行时刻指定时,例如,通过动态装载,或者
  2)为了避免创建一个与产品类层次平行的工厂类层次时;或者
  3)当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
6、singleton 单件
6.1 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
6.2 在下面的情况下可以使用该模式:
  1)当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
  2)当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

时间: 2024-10-18 06:53:27

《设计模式:可复用面向对象软件的基础》摘要(上)的相关文章

设计模式 可复用面向对象软件的基础 pdf下载

网盘地址:设计模式 可复用面向对象软件的基础 pdf下载 – 易分享电子书PDF资源网 作者: [美] Erich Gamma / Richard Helm / Ralph Johnson / John Vlissides 出版社: 机械工业出版社 副标题: 可复用面向对象软件的基础 原作名: Design Patterns: Elements of Reusable Object-Oriented Software 译者: 李英军 / 马晓星 / 蔡敏 / 刘建中 等 出版年: 2000-9

设计模式-可复用面向对象软件的基础 [读书笔记]

由于如下笔记中有直接描述是该书的第几节,因此将该书的封面贴下: 1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案. 在软件设计中可能会遇到很多类似的问题,在每次遇到类似问题时我们不必全都新想办法来解决,而可以复用之前解决类似问题的方案,解决问题多之后就 会有针对特定问题有特定(相对固定)的方式方法来解决,这相对固定的方式方法就是设计模式,其也算是经验总结. 开篇有两种在设计模式书籍里面很重要的表格和关系图

电子书 设计模式:可复用面向对象软件的基础.pdf

<设计模式:可复用面向对象软件的基础>是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年设计经验的结晶.四位面向对象领域专家精心选取了具价值的设计实践,加以分类整理和命名,并用简洁而易于重用的形式表达出来.本书已经成为面向对象技术人员的圣经和词典,书中定义的23个模式逐渐成为开发界技术交流所必备的基础知识和语汇.作者简介 Erich Gamma,在苏黎世大学获得计算机科学博士学位,曾供职于瑞士联邦银行.Taligent.OTI公司.现在是Eclipse项目的主要技术负责人之一. Ri

设计模式_可复用面向对象软件的基础pdf

下载地址:网盘下载 这本书结合设计实作例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来.书中分类描述了一组设计良好.表达清楚的软件设计模式,这些模式在实用环境下特别有用.此书适合大学计算机专业的学生.研究生及相关人员参考. 书中涉及的设计模式并不描述新的或未经证实的设计,只收录了那些在不同系统中多次使用过的成功设计. 四位作者均是国际公认的面向对象软件领域的专家. Erich Gamma博士是瑞士苏黎士国际面向对象技术软件中心的技术主管

设计模式(Design Patterns——可复用面向对象软件的基础

    设 计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用 设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决 方案,这也是它能

设计模式(Design Patterns) ——可复用面向对象软件的基础

设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因

设计模式-可复用面向对象软件基础笔记(一)

1.根据两条准则对设计模式进行分类: 第一是目的准则:模式依据其目的可分为创建型(C r e a t i o n a l) .结构型 ( S t r u c t u r a l ).或行为型( B e h a v i o r a l )三种.创建型模式与对象的创建有关:结构型模式处理类或对象的组合:行为型模式对类或对象怎样交互和怎样分配职责进行描述. 第二是范围准则:指定模式主要是用于类还是用于对象.类模式处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了.对象模式处

设计模式可复用面向对象软件设计基础之对象创建型模式—ABSTRACT FACTORY( 抽象工厂)

意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用性 在以下情况可以使用 Abstract Factory模式 ? 一个系统要独立于它的产品的创建.组合和表示时. ? 一个系统要由多个产品系列中的一个来配置时. ? 当你要强调一系列相关的产品对象的设计以便进行联合使用时. ? 当你提供一个产品类库,而只想显示它们的接口而不是实现时. 结构 模式结构图如下所示: Creator: 声明一个创建抽象产品对象的操作接口. ConcreteCreator:(Concrete

导致面向对象软件重新设计的一般原因

下面阐述了一些导致重新设计的一般原因,以及解决这些问题的设计模式: 1. 通过显示地指定一个类来创建对象 在创建对象时指定类名将使你受特定实现的约束而不是特定接口的约束.这会使未来的变化更复杂.要避免这种情况,应该间接地创建对象. 设计模式: Abstract Factory, Factory Method, Prototype. 2. 对特殊操作的依赖 当你为请求指定一个特殊操作时,完成该请求的方式就固定下来了.为了避免把请求写死,你将可以在编译时刻或运行时刻很方便地改变响应请求的方法. 设计