当前位置:首页 >> 其它课程 >>

设计模式复习1.0


创建型模式: 抽象工厂模式(Abstract Factory)、建造者模式 (Builder)、工厂方法模式(Factory Method)原型模式 (Prototype)、单例模式(Singleton) 结构型模式: 适配器模式(Adapter)、桥接模式(Bridge)、组合 模 式 (Composite)、 装饰模 式 (Decorator)、 外观 模式 (Facade)

、享元模式(Flyweight) 行为型模式: 职责链模式(Chain of Responsibility)、命令模式 (Command)、观察者模式(Observer)、模板方法模式 (Template Method)

成不同的工作,称为多线程. 第 5 章设计模式试题 1. 设计模式具有的优点(适应需求变化) 2. 设计模式一般用来解决什么样的问题(同一问题的 不同表相)。 3. 设计模式的两大主题是(系统复用与系统扩展)。 4. 以下哪些问题通过应用设计模式不能够解决。 (确 定软件的功能都正确实现) 2. 设计模式基本原则包括:开闭原则, (从场景进行 设计的原则) ,包容变化原则。 3. 设计模式是一个(抽象)的方案,它可以解决一类问 题。 4. 1. 在设计模式群体中,效果是指(原因和结果) 。

2. 接口:包含了一系列不被实现的方法,而把这些方 法的实现交给继承它的类。 3. 组合一个类是另一个类的组成成分。 4. 多态:相关的对象按照各自类型来实现方法的能力。 1. 抽象是指不同事物之间概念上的联系方式。 2. 重构修改代码改进结构但不增加新功能,就是所谓 重构。 3. 内聚性指的是例程中操作之间联系的紧密程度。 4. 耦合性指的是两个例程之间联系的紧密程度。 2. 组合爆炸:随着问题中元素的增加,所出现的可能 组合数剧烈增加,形象的说法就是组合爆炸。 3. 封装:任何形式的隐藏。对象对它们的数据进行封 装。抽象类对它们派生出的具体类进行封装 4. 抽象类:为一组概念上相似的类定义方法和公共属 性。抽象类绝对不能被实例化。 5. 具体类:是能被直接实例化的类、用例、信号、其 他类元或其他泛化元素,它也可以用来描述实现的操 作。 2. 结构型模式: 将现存的对象结合在一起, 处理接口, 将实现与抽象类联系起来。 3. 行为型模式:提供一种显得灵活(变化)的行为, 包容变化的模式。例如,strategy 模式和 observer 模 式。 4. 创建型模式:创建或实例化对象 2. 重载:一个类中的方法与另一个方法同名,但是参 数表不同,这种方法称之为重载方法。 3. 虚拟方法:当实例方法声明包含 virtual 修饰符时, 称该方法为虚拟方法。 2. 构造函数:对对象进行初始化或初始设置。 3. 规格:生产的成品或所使用的原材料等规定的质量 标准。3. 多线程:在单个程序中同时运行多个线程完

2. 模板:模式定义一个操作中的算法的骨架,而将一 些步骤延迟到子类中。 3. 模式:就是解决某一类问题的方法论。把解决某类 问题的方法总结归纳到理论高度,那就是模式。 4. 内聚度:模块内部各成分彼此结合的紧密程度。 1. 什么是设计模式?设计模式的目标是什么? 设计模式是一套被反复使用、多数人知晓的、经 过分类编目的、代码设计经验的总结。使用设计模式 是为了可重用代码、让代码更容易被他人理解、保证 代码可靠性。 2. 设计模式的基本要素有哪些? 名称, 意图, 问题, 解决方案, 参与者和协作者, 效果,实现,GOF 参考。 3. 设计模式中一般都遵循的原则有什么? 开-闭原则,根据场景进行设计原则,优先组合原 则,包容变化原则。 4. 四人团针对“创建优秀面向对象设计”建议了哪些 策略? 针对接口编程, 优先使用对象组合而不是类继承, 找到并封装变化点。 第 6 章 facade(外观)模式 1. 外观模式的作用是(为了系统中的一组功能调用提 供一个一致的接口,这个接口使得这一子系统更加容 易使用。。 ) 1. Facade 模式可以用来(隐藏)系统。该模式能够将 系统作为自己的私有成员包含进来。 2. Fa?ade 模式要解决的问题:只需要使用一个复杂系 统的一个(子集) 。或者,需要用一种特殊的方式与系 统交互。 3. Fa?ade 模式不仅可以为方法调用创建更(简单)的 接口,还可以减少客户必须处理的对象数量。

1. Fa?ade(外观)模式不仅可以为方法调用创建更简 单的接口,还可以减少客户必须处理的对象数量。对 Fa?ade 模式:模式定义了一个高层接口,使得这一子 系统更加容易使用,为子系统中的一组接口提供一个 一致的界面。 Fa?ade(外观)模式解决问题的方案是什么?如何实 现? Fa?ade 向客户展现使用现有系统的一个新的接口。 如何实现:定义一个(或一组)新的类来封装所需的 接口。让新的类使用现有的系统。 2. 请简要说明在一个复杂系统中应用 Fa?ade(外观) 模式的优点。 当拥有一个复杂的系统时,Fa?ade(外观)模式 使我们只需要使用它的一部分功能。最终我们将得到 一个更简单,更容易使用的或根据我们的需要定制的 系统。 3. Fa?ade 模式的意图是什么? 望那个简化现有系统的使用方法,需要定义自己 的接口。 1.请论述在一个系统中应用 Fa?ade(外观)模式的必 要性,并给出一种解决方案。 Fa?ade(外观)模式不仅可以为方法调用创建更 简单的接口,还可以减少客户必须处理的对象数量。 举个例子。假设有一个 Client 对象,这个对象必须处 理 Database、Model、Element 类的对象。Client 必须 首先通过 Database 对象打开数据库,以得到一个对 Model 对象的引用,然后再向 Model 对象请求一个 Element 对象,最后向 Element 对象查询所需的信息。 而如果能创建一个 DatabaseFacade 类,让 Client 对象 向它发出请求,那么上面的过程可能就会变得简单一 些。 第 7 章 Adapter(适配器)模式 4. 以下关于结构型模式说法不正确的是。 () A)结构型模式可以在不破坏类封装性的基础上, 实现新的功能。 B)结构型模式主要用于创建一组对象。 C)结构型模式可以创建一组类的统一访问接口。 D)结构型模式可以在不破坏类封装性的基础上, 使得类可以同不曾估计到的系统进行交互。 2. Adapter 模式有两种类型有: 对象 Adapter 模式、 (类 Adapter 模式) 。 3. UML 是一种用来创建 (程序模型) 的图像语言。 5. 适配器模式,分为类的适配器和对象的适配器 两种实现。其中类的适配器采用的是(继承)关系,

而对象适配器采用的是组合聚类关系。 1. 对象适配器模式是合成聚合复用原则的典型 应用。对 2. 对象 Adapter 模式:使用 Adapter 模式与适当 的抽象类相匹配, 它通常依赖于一个对象 (适配对象) 包含另一个对象(被适配对象) 。 3. 类 Adapter 模式:当实现 Adapter 模式的方法 是使用多重继承。在这种情况下,它被成为类 Adapter 模式。 1. 给出 Adapter 模式的定义及意图。 意图是将一个类的接口转换成客户希望的另外一 个接口。 Adapter 模式使原本由于接口不兼容而不能一 起工作的那些类可以一起工作。 2. Adapter 模式的最常见的用法是什么?该模式 可以使你不用操心什么方面? Adapter 模式最通常的用途就是保持多态。 Adapter 模式让我们在进行设计时不必再担心现存类的接口问 题。 3. Adapter 模式问题的解决方案以及如何实现? 解决方案是 Adapter 模式用我们需要的接口对无 法修改的类进行包装。实现:将现存的类包含在另一 个类之中。 包容类与需要的接口相匹配,并调用被包容类的 方法。 4. 请简要说明在软件设计中设计模式的作用? 软件设计模式(Design Pattern)是一套被反复使 用、多数人知晓的、经过分类编目的代码设计经验的 总结。使用设计模式是为了适应需求变化、可重用代 码、让代码更容易被他人理解、保证代码的可靠性。 1. 根据你的理解,请分析 Fa?ade 模式比 Adapter 模式的相同点和不同点,并说明它们在实际应用中的 差异? 在两个模式中,都拥有现存的类,但是在 Fa?ade 模式中,无须针对某个接口进行设计;而在 Adapter 模式中则必须针对某个特定接口进行设计。在 Fa?ade 模式中,动机是简化接口,而在 Adapter 模式中,尽 管也是越简单越好,目的是针对一个现有的接口进行 设计,并不能简化任何东西,即使可能有另一个更简 单的接口。总之,在实际应用中,Fa?ade 模式简化接 口, Adapter 模式将接口转换成另一个现有的接口。 而 第 9 章 Bridge(桥接)模式 1. 关于继承表述错误的是: (继承本质上是“白 盒复用” ,对父类的修改,不会影响到子类。。 ) 2. 在不破坏类封装性的基础上,使得类可以同不

曾估计到的系统进行交互。主要体现在(桥接模式 (Bridge)) 。 3. 行为类模式使用 (继承机制) 在类间分派行为。 4. 下面的类图表示的是哪个设计模式?(桥接模 式(Bridge)) 。

1. Bridge 模式要解决的基本问题是什么? Bridge (桥接) 模式适用于一个抽象部分拥有不同 的实现部分的情况,它让抽象部分和实现部分可以各 自独立的变化。 2. 给出 Bridge 模式的定义。 采用 Bridge 模式的效果是 什么? 将抽象化与实现化脱耦,使得二者可以独立的变 化,也就是说将他们之间的强关联变成弱关联,也就 是指在一个软件系统的抽象化和实现化之间使用组合 /聚合关系而不是继承关系, 从而使两者可以独立的变 化。效果是: “实现部分与使用它的对象的分离”增加 了灵活性。客户对象不需要了解实现问题。 3. 什么是“一条规则,一个地方”? 抽象类经常让自己的方法实际使用实现部分对象。 抽象部分的派生类将调用这些方法。这样如果需要修 改,修改也会容易些,并且在实现整个模式之前让你 拥有一个好的起点。 4. 在学习 Bridge(桥接)模式的过程中,应该遵循下

5. Bridge(桥接)模式的意图是(将一组实现部分 从另一组使用它们的对象中分离出来使它们可以独立 地变化) 。 7. 以下叙述不对的是(Bridge 模式优先使用继承 而不是组合.)。 9. 对 Alexander 的模式哲学,以下叙述正确的是(每 个模式,可以无数次使用模式提供的解决方案,而不必 再次重复同样的工作方式.)。 10. 根据 Coplien 关于共同点/变化点的说法,下面 哪个是正确的(共同点分析是寻找家族成员的相同元 素. )。 1. 在存在继承关系的情况下,方法向超类方向集 中,而数据向(子类)方向集中。 2. 当存在一个抽象有不同实现时 Bridge 模式最为 有用, 它可以使抽象和 (实现) 相互独立地进行变化。 3. (类型的封装)是通过多态使用具有派生类的 抽象类实现的。 5. C++中,必须用一个定义(公共接口)的抽象类 来实现 Bridge 模式的实现部分。 6. 为了提高内聚和(松耦合),我们经常会抽象出 一些类的公共接口以形成抽象基类或者接口。 7. 封装性好的代码更容易测试,因为它与其他代 码没有(耦合) 。 8. Bridge (桥接) 模式是将抽象部分与它的实现部 分分离,其中(实现部分)是指用来实现抽象类的派 生类的对象。

列处理变化的基本策略是什么? 找出变化并封装变化点;优先使用对象组合,而 不是类继承。 5. Bridge(桥接)模式的解决方案是什么,以及如何 实现? 解决的问题是: 为所有的实现部分定义一个接口, 让抽象类的所有派生类使用这个接口。实现:将实现 部分封装在一个抽象类中。在被实现的抽象部分基类 中包含一个实现部分基类的句柄。 1. 根据你对 Bridge 模式的理解,概要描述使用 该模式的应用要求,并给出相应的设计类图。 当存在一个抽象有不同实现时 Bridge 模式最为有 用,它可以使抽象和实现相互独立地进行变化。 2. 举例说明使用 Bridge 模式的场合,给出在该 场合下使用 Bridge 模式的解决方案, 并说明该解决方 案的优点。 打印驱动程序是 Bridge 模式最典型的例子,也是 最适合应用 Bridge 模式的场合。Bridge 模式的真正威 力在于它能够帮助我们看到什么时候应该从问题域中 提取实现。也就是说,有时候有一个实体 X 使用系统 S,一个实体 Y 使用系统 T。我们可能认为 X 总是与 S 相伴, Y 总是与 T 相伴, 而 因此就将它们联系 (耦合) 起来。Bridge 模式提醒我们,可以抽象出 S 和 T,这样 更好,也就是说,Bridge 模式最有用的地方,是在解 耦抽象与实现之前考虑 Bridge 模式是否适用。 第 10 章 Abstract Factory(抽象工厂)模式

1. 静态工厂的核心角色是(抽象产品) 。 4. Abstract Factory(抽象工厂)模式的意图是(提供一 个创建一系列相关或相互依赖对象的接口,而无需指 定它们具体的类) 。 5. 在根据不同的机器选择设备驱动程序的案例中,以 下叙述不准确的是()。 A. 可以使用 switch 语句选择驱动程序. B. 可以使用继承来实现选择驱动程序,但它可能 会产生类组合爆炸问题.. C. 可以选择抽象工厂模式实现,且能避免组合爆 炸问题. D. 使用继承的解决方案要比 switch 语句有更多 的优势. 6. 以下有关 Abstract Factory(抽象工厂)模式正确的 是(Abstract Factory 类和具体工厂方法可以分离,每个 具体工厂负责一个抽象工厂方法接口的实现. )。 7. 根据《设计模式》 ,有关抽象工厂模式的定义,准确 的说法是(要创造的东西本身是抽象定义的,工厂方 法可以灵活实现) 。 8. 关于抽象工厂模式,以下叙述不正确的是(客户对 象不需要知道向谁请求所需的对象和如何使用这些对 象。 ) 9. 关于抽象工厂模式( Abstract Factory ) ,以下叙述 正确的是(抽象工厂定义接口,具体工厂实现某一接 口) 。 2. 工厂模式分为简单工厂,工厂方法,( 抽象工厂) 三种类型。 4. Abstract Factory 模式强调的是为创建多个相互 依赖的对象提供一个(同一的接口) 。 5. 我们可以使用(抽象工厂)模式,不同应用程 序都使用同一子系统。 7. 当一个系统要(独立)于它的产品的创建、组 合和表示时适合用 Abstract Factory 模式。 8. Abstract Factory 模式为如何创建对象组的每个 成员定义(接口) 。 9. 抽象工厂模式是定义一个(抽象类) ,然后为 每个组实现一个具体类。 10. Abstract Factory 模式将如何执行对象(实例化) 规则从使用这些对象的客户对象提取出来。 1. Abstract Factory(抽象工厂)模式 就是用来解决这类问题的:要创建一组相关或者 相互依赖的对象。 1. Abstract Factory 的三个关键策略是什么? 发现并封装变化点;优先使用对象组合,而不是

类继承;针对接口设计,而不是针对实现设计。 2. 采用 Abstract Factory 模式的效果是什么? 效果: 这个模式将 “使用哪些对象” 的规则与 “” 如何使用这些对象“的逻辑相隔离。 3. 为什么这个模式被称为“Abstract Factory”? 因为它要创建的东西本身是由抽象定义的。工厂 各种变化的实现如何选择,模式并没有具体规定。 4. 如何获得正确的工厂对象? 决定需要哪个工厂对象实际上是判断需要哪个系 列的对象。如何知道自己需要哪个系列呢?在类似的 案例中,最可能的是由一个配置文件来告诉我们。然 后就可以写几行代码,根据这些配置信息来将合适的 工厂对象实例化。 5. 在 Abstract Factory(抽象工厂)模式中对象的角色 是什么? 客户对象只知道“向谁请求需要的对象”和“如 何使用这些对象” 。Abstract Factory 类通过“为每种不 同类型的对象定义一个方法来指定”哪些对象可以被 实例化。 典型情况下, 一个 Abstract Factor 对象将针对 每种必须实例化的对象拥有一个方法。具体工厂指定 哪些对象将被实例化。 1. 请结合抽象工厂模式,说明在实际应用中如何 生成正确的对象。 决定需要哪个工厂对象实际上与确定使用哪一组 对象是相同的。例如,在驱动程序问题中,有一组低 分辨率动程序和一组高分辨率驱动程序,怎样才能知 道自己需要哪一组呢?在类似这样的例子中,很可能 通过一个配置文件获知这一信息。然后可以编写几行 代码,根据配置信息将合适的工厂对象实例化。还可 以使用 Abstract Factory 模式,不同应用程序都使用同 一子系统。在这种情况下,工厂对象将传给子系统, 告诉子系统将要使用哪些对象,此时,通常主系统知 道子系统需要那一组对象,在调用子系统之前,将实 例化正确的工厂对象。 第 12 章用模式解决 CAD/CAM 问题 2. 当我们想创建一个具体的对象而又不希望指定具 体的类时,可以使用(创建型)模式。3. 实现部分各 不相同, 但都可以通过一个通用接口被访问是 (Bridge) 模式中的包容变化。 4. 以下哪一条是 Alexander 的场景原则: (当你有一个 涉及创建对象的设计模式时, 对象应为模式提供场景) 。 5. 最高级别的模式约束其他的模式的不正确的叙述 是(最高级别的模式是最重要的,其他的模式是次要 的) 。

1. 设计模式的思想根源是(开闭)基本原则的宏观 运用,本质上是没有任何模式的,发现模式的人永远是 大师,而死守模式的人,最多只能是一个工匠。 2. 模式不仅仅是包容变化,它们还是变化之间的 (关联) 。 3. 系统中为其他模式确定场景的一个或两个模 式,这个模式将对其他模式能做的事进行(约束) 。 4. 通常情况下,当一个模式使用另一个模式时, 看起来被使用模式是在使用模式的(场景)之中的。 5. 系统中的一个模式经常通过为系统中的其他 模式提供(场景)与其他模式相关联。 1. 场景:一些事物存在或发生的相互关联的状态。 2. CVA:共同点/变化点分析 3. 场景原则:当有一个涉及创建对象的设计模式时, 这些对象为这个模式提供场景。 1. 考虑场景时使用的一条原则是什么? 考虑在系统中需要什么, 然后再关心如何实现它。 这也符合 Alexander 的场景原则: 当有一个涉及创建对 象的设计模式时,这些对象为这个模式提供场景。 2. 用模式的方法思考的步骤是什么? 发现在问题领域中拥有的模式,这些是需要分析 的模式;对于这些需要分析的模式,做下列工作:a. 挑出为其他模式提供最多场景的模式。b. 在我的概念 性最高的设计中使用这个模式。 c.识别任何可能已经出 现的附加模式。将它们添加到“需要分析的模式中” 。 d.对于需要分析而还未分析的模式,重复上述过程; 按照需要将细节添加到设计中。扩展方法和类定义。 3. 场景和被使用模式之间有什么关联? 通常情况下,当一个模式使用另一个模式时,看 起来被使用模式是在使用模式的场景之中的。这条规 则也可能有例外,但是看起在大多数时候它都是有效 的。 4. 什么是“最高模式”? 指系统中为其他模式建立背景的一两个模式。这 个模式将约束其他模式的行为。 5. 为一个庞大的工程的 CAD/CAM 系统提供支持的基 本需求是什么? 创建一个计算机程序, 它能读取一个 CAD/CAM 数 据集并从中提取部件,一个现有的专家系统需要这些 部件才能进行智能设计。 这个系统应该向 CAD/CAM 系 统屏蔽专家系统。 复杂的是 CAD/CAM 系统正处于变化 之中。可能有 CAD/CAM 系统的多个潜在版本存在,而 专家系统需要拥有它们的接口。 第 13 章设计模式的原则和策略

1. Open-Close 原则的含义是一个软件实体(应当对 扩展开放.,对修改关闭)。 2. 典型情况下, (Facade)模式不包容变化。 2. 最基本的 UML 图是 (类图)它不仅描述了类, 。 而且说明了类之间的关系。 3. 模块,方法和类应该对扩展是开放的,而对更 改是(封闭)的。 4. Alexander 告诉我们要从(场景)进行设计,在 设计我们的片段出现的细节之前先创建整体视图。 5. Bridge 模式不仅仅对抽象部分和实现部分的变 化进行定义和包容, 而且还定义了两个变化之间的 (关 联) 。 1. 什么是开-闭原则? 模块,方法和类应该对扩展是开放的,而对更改 是封闭的。换句话说,我们必须将我们的软件设计成 这样:我们可以在不修改代码的前提下对我们的软件 进行扩展。 2. 哪些因素决定了用哪种方案来实现 Abstract Factory 模式? 未来变化的可能性; 不修改当前系统” “ 的重要性; 谁来控制将被创建的对象系列(是我们还是其他的开 发组) 使用的编程语言; ; 数据库或配置文件的可用性。 3. 按照模式进行设计的策略是什么? 1.开放-封闭的原则 2.从场景进行设计 3. 在类中 包容变化。 4. 请举例说明如何根据模式为其他的模式创造 场景来选择模式。 比如,Bridge-Facade 关联,使用 Facade 模式来简 化 V1 系统的接口,Bridge 模式的实现部分之一使用 Facade 模式所创建的新接口。因此,Bridge 模式为 Facade 模式创造了场景。 5. 为什么说 Bridge 是包容变化原则的一个精彩的 范例? Bridge 模式中的实现部分各不相同,但都可以通 过一个通用接口被访问。 系统可以接纳新的实现部分, 只要它也使用这个通用接口来实现。 1. 在本书的应用案例中, 为什么认为 Bridge 模式 高于 Adapter 模式?请举例说明。 Bridge 模式的应用情景是在概念的抽象有变化及 其实现方式有多个。而 Adapter 模式的应用情景是原 有对象的接口和需要的接口有差别。而大多数情景下 Bridge 模式是作为 Adapter 模式的背景。 也就是 Bridge 是 Adapter 的“最高模式” ,在用 Bridge 模式封装实现 时,大多数的实现并不可以派生自相同的基类,这时

Adapter 模式就可以派上用场了。 第 16 章 Singleton(单件)和 Double-Checked Locking(双重检查锁定)模式 1. Singleton 模式适用于(当这个唯一实例应该是通过 子类化可扩展的,并且客户应该无需更改代码就能使 用一个扩展的实例时) 。 5. 单例模式(Singleton) (装饰)模式的意图是: (你 希望只拥有一个对象,但不用全局对象来控制对象的 实例化) 。 1. (单例)模式确保某一个类仅有一个实例,并 自行实例化向整个系统提供这个实例。 2. (单例)模式只应在有真正的“单一实例”的 需求时才可使用。 4. Singleton (单件) 模式和 Double-Checked Locking 模式都用以确保一个特定的类只有一个对象被(实例 化) 。 1. Singleton(单件)模式:保证一个类仅有一个 实例,并提供一个访问它的全局访问点。 2. Double-Checked Locking 模式:是 singleton 的多线 程版本。 1. Singleton(单件)模式怎样工作? Singleton(单件)模式的工作方式是:拥有一个 特定的方法,这个方法被用于实例化需要的对象。当 这个方法被调用时,它检查这个对象是否已经被实例 化。如果对象已经被实例化,这个方法仅仅返回这个 对象的一个引用。如果对象尚未实例化,这个方法将 对象实例化并返回这个新的实例的引用。为了确保这 是创建这个类型的对象的惟一途径,在这个类中将构 造函数定义为 protected 或 private。 2. Singleton(单件)模式和 Double-Checked Locking 模 式之间有什么区别? Singleton(单件)模式用于单线程应用程序,而 Double-Checked Locking 模式用于多线程应用程序。 3. 描述 Singleton(单件)模式意图以及效果? Singleton(单件)模式的意图是你希望只拥有一 个对象,但不用全局对象来控制对象的实例化。效果 是客户对象不需要关心是否已经有 Singleton 的实例存 在。这可以在 Singleton 内部得到控制。 4. Singleton(单件)模式的用途是什么? 它让我们可以仅仅对对象进行一次实例化,而不 要求客户对象关心这个对象是否存在。 1. 在一个多线程应用程序中, 如果使用 Singleton 模式,试分析可能会出现哪些问题。 出现 A 进程和 B 进程同时访问某个对象的时候,

发现它没有实例化过, 结果 A、 进程分别将该类实例 B 化一次,出现冗余对象的情况。这个情况并不多见, 但是 C++中出现了就是内存泄露的重大问题。 第 17 章 Observer(观察者)模式 1. 在观察者模式中,表述错误的是(观察者可以改变 被观察者的状态,再由被观察者通知所有观察者依据 被观察者的状态进行。。 ) 5. Observer 模式不适用于(一个对象结构包含很多类 对象,它们有不同的接口,而想对这些对象实施一些 依赖于其具体类的操作。。 ) 9.对观察者模式,以下叙述不正确的是(必须找出所 有希望获得通知的对象) 。 10. 对于观察者模式,以下叙述正确的是(如果对象 之间的以来关系是固定的,采用观察者模式会带来负 面影响) 。 2. 观察者模式定义了一种 (一对多) 的依赖关系, 让多个观察者对象同时监听某一个主题对象。 4. 当依赖关系固定(或几乎固定)时,加入一个 Observer 模式可能只会增加(复杂性) 。 5.为了对所有 Observer 类型的对象实现 Observer 接口,有时候需要使用(Adapter)模式。 6. 如果系统在不同的情况下运行,或由不同的用 户运行, 观察者列表会不同, 这时适宜用 (Observer) 模式。 7. 一个观察者可能只需要处理事件的某些情况, 在这种情况下, 观察者必须将额外的 (通知) 筛选掉。 8. 对观察者模式,观察者通常将观察某个事件的 责任交给(中心对象或 Subject) 。 9. Subject 类将实现一个(notify)方法来遍历其 Observer 对象列表,并调用每个 Observer 对象的 update 方法。 10. 当 Subject 对象有了已注册的 Observer 对象, 事件发生时, Subject 对象通知 Observer 对象将非常简 单。 为此, 每个 Observer 对象都要实现一个 (update) 方法。 1. GOF 设计模式按照模式的目的可分为哪三类?其目 的分别是什么? 结构型:将现存的对象结合在一起。行为型:提 供一种显得灵活(变化)行为。创建型:穿件或实例 化对象。 2. Observer 模式的定义,它要解决什么样的问题? Observer(观察者)模式定义对象间的一种一对 多的依赖关系,当一个对象的状态发生改变时,所有 依赖于它的对象都得到通知并被自动更新。解决的问

题是当某个事件发生时,你需要向一系列对象发出通 知,而这个对象的列表是不断变化的。 3. Observer(观察者)模式的效果。 效果是如果某些 Observer 只对全部事件的一个子 集感兴趣,那么 Subject 可能会告诉 Observer 它们不 需要知道的事件。 如果在 Subject 通知 Observer 之后, Observer 又转过来请求附加信息,就可能需要额外的 通信。 4. Observer(观察者)模式如何实现解决方案的? 让“希望知道某个事件何时发生”的对象 (Observer)将自己注册到另一个“监视事件发生或 自己触发事件” 的对象 (Subject) 上。 当事件发生时, Subject 告诉 Observer“你关心的事情已经发生了” 。 为了能让所有的观察者型对象实现 Observer 接口,有 时候需要使用 Adapter 模式。 1. 给出 Observer 的定义以及它的意图, 举一个例 子说明该模式的适用场景,最后画出它的类图。 定义对象间的一种一对多的依赖关系,当一个对 象的状态发生改变时,所有依赖于它的对象都得到通 知并被自动更新。解决的问题是当某个事件发生时, 你需要向一系列对象发出通知,而这个对象的列表是 不断变化的。例如,在 Subject 对象注册了它的一个 Observer 对象, 当事件发生时, Subject 对象向 Observer 对象发出通知就非常简单了。为了实现这一功能,每 个 Observer 类都实现一个叫做 updata 的方法。 Subject 类这样实现 notify 方法:遍历自己的 Observer 对象列 表, 调用其中每个 Observer 对象的 updata 方法。 Updata 方法应该包含处理事件的代码。 2. 根据你的理解,请你谈谈结构型和行为型模式 的区别,并结合实际的应用举例说明。 结构型模式的目的是将现存的对象结合在一起, 用途是处理接口,将实现与抽象类联系起来。而行为 型模式的目的是提供一种显得灵活的行为,用途是包 容变化的。例子:结构型模式中的 Bridge 模式或 Decorator 模式与行为型模式中的 Strategy 模式的比较。 第 18 章 Template Method(模板方法)模式 2. 模板方法的作用是(在方法中定义算法的框架,而 将算法中的一些操作步骤延迟到子类中实现) 。 4. 有关模板方法模式,以下叙述不正确的是(将定义 和操作相互分离) 。 5. 在采用模板方法模式对系统连接不同数据库(例如 Oracle 和 SQL Server)的连接时,以下叙述不正确的是 (可以采用通用的实现方法建立对不同数据库的连 接) 。

1. Template Method 模式准备一个抽象类, 将部分 逻辑以(具体方法)以及具体构造子类的形式实现, 然后声明一些抽象方法来迫使子类实现剩余的逻辑。 2. Template Method(模版)模式是用以帮助从不 同的步骤中抽象出一个(通过的)过程模式。 3. Template Method(模版)模式让我们可以在抽 象类中捕捉共同点而在(派生类)中封装不同点。 4. 当遇到一个心得数据库时,Template Method (模版)模式提供了一个(样板)让我们填充。我们 创建一个新的派生类,并根据新的数据库的要求实现 特定的步骤。 5. Template Method(模版)模式使得子类可以不 改变一个算法的结构即可(重定义)该算法的某些特 定步骤。 1. Template Method(模版)模式 定义一个操作中的算法的骨架,而将一些步骤延 迟到子类中。 Template Method 使得子类可以不改变一 个算法的结构即可重定义该算法的某些特定步骤。 1. Template Method 模式以怎样的一种特殊的方式进 行方法调用? Template Method(模版)模式可以这样做,因为 对方法的调用是通过一个引用来进行的,而这个引用 指向的对象属于某一个派生类。 2. Template Method(模版)模式如何定义,其效果是 什么? 定义一个操作中的骨架,而将一些步骤延迟到子 类中。 Template Method 模式使得子类可以不改变一个 算法的结构即可重定义该算法的某些特定步骤。 效果: 模版为代码复用提供了一个优秀的平台。它们还有助 于确保需要的步骤得到实现。它们为每个具体类将重 载后的步骤捆绑在一起,因此只有在这些重载方法总 是并且只能一起发生时, 才应该使用 Template Method (模版)模式。 3. Template Method(模版)模式需要解决的问题是什 么?解决方案是什么? 需要遵循一个过程或一系列步骤,它们在某个具 体层次上保持一致,但单个步骤在更详细的层次上可 能有不同的实现。 解决方案: 允许定义不同的子步骤, 同时维护基本过程的一致性。 4. 按照四人团的说法,Template Method 模式的基本 思想是什么? 定义一个操作中的算法的骨架,而将一些步骤延 迟到子类中。 Template Method 模式使得子类可以不改 变一个算法的结构即可重定义该算法的某些特定步骤。

Template Method 模式给了我们一条途径, 让我们可以 在抽象类中捕捉共同点而在派生类中封装不同点。 第 19 章 Factory Method(工厂方法)模式 1. 下列关于静态工厂与工厂方法表述错误的是: () A.两者都满足开闭原则:静态工厂以 if else 方式 创建对象,增加需求的时候会修改源代码。 B.静态工厂对具体产品的创建类别和创建时机的 判断是混和在一起的,这点在工厂方法是分开的。 C 不能形成静态工厂的继承结构。 D.在工厂方法模式中,对于存在继承等级结构的 产品树,产品的创建是通过相应等级结构的工厂创建 的。 3. Factory Method(工厂方法)模式的意图是: (定义 一个用于创建对象的接口,让子类决定实例化哪一个 类。将实例化延迟到其子类) 5. 关于工厂方法,以下叙述不正确的是() 。 A Factory Method 是一个用于帮助分配创建责任 的模式。 B Factory Method 模式和 Abstract Factory 模式总 是配合使用。 C Factory Method 适用于将对象实例化的规则推 迟到某个派生类的情形。 D Factory Method 是属于创建型模式。 1. (工厂方法)模式中,父类负责定义创建对象 的接口,子类则负责生成具体的对象。 4. Factory Method (工厂方法) 模式在定义 (框架) 的过程中很常用,这是因为它存在于一个抽象的层次 上。 1. Abstract Factory 模式如何由一系列 Factory Method (工厂方法)模式来实现? 在 Abstract Factory 模式的典型实现中,用一个抽 象类来定义创建一族对象的方法。为每个可能拥有的 对象族派生出一个具体类。这些方法全都在抽象类中 定义, 然后在派生类中被重载, 这些方法遵循了 Factory Method(工厂方法)模式。 2. Factory Method (工厂方法) 模式意图是什么?效果 是什么? 意图是定义一个用于创建对象的接口,让子类决 定实例化哪一个类。将实例化延迟到其子类。效果: 客 户 将 需 要 Creator 的 子 类 来 创 建 一 个 特 定 的 ConcreteProduct 对象。 3. Factory Method (工厂方法) 模式的解决问题的方案 是什么,如何实现? 意图是定义一个用于创建对象的接口,让子类决

定实例化哪一个类。将实例化延迟到其子类。效果: 客户将需 要 Creator 的 子 类 来 创 建 一 个 特 定 的 ConcreteProduct 对象。 4. 什么情况下适合使用 Factory Method(工厂方法) 模式? a 当客户程序不需要知道要使用对象的创建过程。 b 客户程序使用的对象存在变动的可能,或者根 本就不知道使用哪一个具体的对象。 六.应用题 1. 请说明抽象工厂和工厂方法模式在应用中的 不同作用,并说明在什么情形下使用抽象工厂模式, 什么情形下使用工厂方法。 2. Factory Method 的意图是什么?根据你知道的模 式,它可能和哪些模式配合使用,试举例说明?


相关文章:
设计模式复习题
暂无评价|0人阅读|0次下载|举报文档 设​计​模​式​复​习​题《设计模式复习、 Java 编程题 1、利用 for 循环语句和 if ..else 语句,...
设计模式复习期末整理资料
暂无评价|0人阅读|0次下载|举报文档设计模式复习期末整理资料_电脑基础知识_IT/计算机_专业资料。期末复习整理资料 试卷1.软件缺陷的等级 A 类——严重错误:1 由...
软件设计模式复习题目
暂无评价|0人阅读|0次下载|举报文档软件设计模式复习题目_工学_高等教育_教育专区。软件设计模式复习题目 1. 有电视机工厂(TVFactory)和电视机(TV)这两种类型的...
设计模式期末复习
设计模式期末复习总结 2页 5财富值如要投诉违规内容,请到百度文库投诉中心;如要...? ? 模式应用 ? (1) XML文档解析 <?xml version="1.0"?> <books> <...
软件设计模式复习题
暂无评价|0人阅读|0次下载|举报文档 软件设计模式复习题_IT认证_资格考试/认证_教育专区。软件设计模式复习题 1、 熟悉每个设计模式的定义、模式 UML 图解、模式...
设计模式复习提纲
暂无评价|0人阅读|0次下载|举报文档设计模式复习提纲_工学_高等教育_教育专区。复习 设计模式复习提纲第一章 1.状态图的定义 状态图用来描述一个特定对象的所有可...
设计模式复习重点之八大模式
暂无评价|0人阅读|0次下载|举报文档 设​计​模​式​复​习​重...无需指定它们具体的类 抽象工厂设计模式中各个对象的主要功能、职责: 1、用...
设计模式期末考试复习
暂无评价|0人阅读|0次下载|举报文档设计模式期末考试复习_工学_高等教育_教育专区。软件设计模式期末考试复习 《软件建模》考试试题举例 一、判断题 1.单例类易扩...
设计模式复习题
暂无评价|0人阅读|0次下载|举报文档设计模式复习题_工学_高等教育_教育专区。这个貌似是我补考试题 我补考通过全靠他了!三、题目预测 填空题: 1.请从外观、组...
软件设计模式复习题
暂无评价|0人阅读|0次下载|举报文档软件设计模式复习题_IT认证_资格考试/认证_教育专区。1.创建型模式的根本意图是把对象的创建和使用分离的责任进行分离,从而降低...
更多相关标签: