软件设计模式试题集_附答案.pdf_第1页
软件设计模式试题集_附答案.pdf_第2页
软件设计模式试题集_附答案.pdf_第3页
软件设计模式试题集_附答案.pdf_第4页
软件设计模式试题集_附答案.pdf_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 5 章 设计模式试题 一 选择 1 设计模式具有的优点 A A 适应需求变化 适应需求变化 B 程序易于理解 C 减少开发过程中的代码开发工作量 D 简化软件系统的设计 2 设计模式一般用来解决什么样的问题 A A 同一问题的不同表相同一问题的不同表相 B 不同问题的同一表相 C 不同问题的不同表相 D 以上都不是 3 设计模式的两大主题是 A 系统的维护与开发 B 对象组合与类的继承 C 系统架构与系统开发 D D 系统复用与系统扩展系统复用与系统扩展 4 以下哪些问题通过应用设计模式不能够解决 A 指定对象的接口 B 针对接口编程 C C 确定软件的功能都正确实现 确定软件的功能都正确实现 D 设计应支持变化 二 填空 1 模式的基本要素包括名称 意图 问题 解决方案 参与者和协作者 效果效果 实现 GoF 参考 2 设计模式基本原则包括 开闭原则 从场景进行设计的原则从场景进行设计的原则 包容变化原则 3 设计模式是一个 抽象抽象 的方案 它可以解决一类问题 4 1 在设计模式群体中 效果是指 原因和结果原因和结果 三 判断 1 适配器模式属于创建型模式 错错 2 在设计模式中 效果 只是指 原因和结果 对对 3 设计模式使代码编制不能真正工程化 错错 4 设计模式的两大主题是系统复用与系统扩展 对对 四 名词解释 1 设计模式 是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可重用代码 是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可重用代码 让代码更容易被他人理解 保证代码可靠性 让代码更容易被他人理解 保证代码可靠性 2 模板 模式定义一个操作中的算法的骨架 而将一些步骤延迟到子类中 模式定义一个操作中的算法的骨架 而将一些步骤延迟到子类中 3 模式 就是解决某一类问题的方法论 把解决某类问题就是解决某一类问题的方法论 把解决某类问题的方法总结归纳到理论高度 那就是模式 的方法总结归纳到理论高度 那就是模式 4 内聚度 模块内部各成分彼此结合的紧密程度 模块内部各成分彼此结合的紧密程度 五 简答题 1 什么是设计模式 设计模式的目标是什么 设计模式是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可设计模式是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可 重用代码 让代码更容易被他人理解 保证代码可靠性 重用代码 让代码更容易被他人理解 保证代码可靠性 2 设计模式的基本要素有哪些 名称 意图 问题 解决方案 参与者和协作者 效果 实现 名称 意图 问题 解决方案 参与者和协作者 效果 实现 GOFGOF 参考 参考 3 设计模式中一般都遵循的原则有什么 开开 闭原则 根据场景进行设计原则 优先组合原则 包容变化原则 闭原则 根据场景进行设计原则 优先组合原则 包容变化原则 4 四人团针对 创建优秀面向对象设计 建议了哪些策略 针对接口编程 优先使用对象组合而不是类继承 找到并封装变化点 针对接口编程 优先使用对象组合而不是类继承 找到并封装变化点 第第 6 6 章章 facade facade 外观外观 模式模式 一 选择 1 外观模式的作用是 A 当不能采用生成子类的方法进行扩充时 动态地给一个对象添加一些额外的功能 B B 为了系统中的一组功能调用提供一个一致的接口 这个接口使得这一子系统更加容易使用 为了系统中的一组功能调用提供一个一致的接口 这个接口使得这一子系统更加容易使用 C 保证一个类仅有一个实例 并提供一个访问他的全局访问点 D 在方法中定义算法的框架 而将算法中的一些操作步骤延迟到子类中实现 2 Fa ade 外观 模式的意图是 A A 希望简化现有系统的使用方法 你需要定义自己的接希望简化现有系统的使用方法 你需要定义自己的接口 口 B 将一个无法控制的现有对象与一个特定借口相匹配 C 将一组实现部分从另一组使用它们的对象中分离出来 D 你需要为特定的客户 或情况 提供特定系列的对象 3 模式定义了一个高层接口 这个接口使得这一子系统更加容易使用 A Adapter 适配器 模式 B Bridge 桥接 模式 C Strategy 策略 模式 D Facade D Facade 外观 模式 外观 模式 4 下面属于结构模式的有 A 观察者模式 Observer B 单例模式 Singleton C 策略模式 Strategy D D 外观模式 外观模式 Fa adeFa ade 二 填空 1 Facade 模式可以用来 隐藏隐藏 系统 该模式能够将系统作为自己的私有成员包含进来 2 Fa ade 模式要解决的问题 只需要使用一个复杂系统的一个 子集子集 或者 需要用一种特殊的方式与系统交互 3 Fa ade 模式不仅可以为方法调用创建更 简单简单 的接口 还可以减少客户必须处理的对象数量 4 Fa ade 外观模式的解决方案是向客户展现使用现有系统的一个新的 接口接口 三 判断 1 Fa ade 外观 模式不仅可以为方法调用创建更简单的接口 还可以减少客户必须处理的对象数量 对对 2 外观模式 当不能采用生成子类的方法进行扩充时 动态地给一个对象添加一些额外的功能 错错 3 Fa ade 模式为子系统中的一组接口提供的界面可能不一致 错错 4 Fa ade 外观模式只能为方法调用创建更简单的接口 不能减少客户必须处理的对象数量 错错 四 名词解释 1 Fa ade 模式 模式定义了一个高层接口 使得这一子系统更加模式定义了一个高层接口 使得这一子系统更加容易使用 为子系统中的一组接口提供一个一致的界面 容易使用 为子系统中的一组接口提供一个一致的界面 2 接口 包含了一系列不被实现的方法 而把这些方法的实现交给继承它的类 包含了一系列不被实现的方法 而把这些方法的实现交给继承它的类 3 组合 一个类是另一个类的组成成分 一个类是另一个类的组成成分 4 耦合度 对模块间关联程度的度量 对模块间关联程度的度量 五 简答题 1 Fa ade 外观 模式解决问题的方案是什么 如何实现 Fa adeFa ade 向客户展现使用现有系统的一个新的接口 如何实现 定义一个 或一组 新的类来封装所需的接口 向客户展现使用现有系统的一个新的接口 如何实现 定义一个 或一组 新的类来封装所需的接口 让新的类使用现有的系统 让新的类使用现有的系统 2 请简要说明在一个复杂系统中应用 Fa ade 外观 模式的优点 当拥有一个复杂的系统时 当拥有一个复杂的系统时 F Fa adea ade 外观 模式使我们只需要使用它的一部分功能 最终我们将得到一个更简 外观 模式使我们只需要使用它的一部分功能 最终我们将得到一个更简 单 更容易使用的或根据我们的需要定制的系统 单 更容易使用的或根据我们的需要定制的系统 3 Fa ade 模式的意图是什么 望那个简化现有系统的使用方法 需要定义自己的接口 望那个简化现有系统的使用方法 需要定义自己的接口 4 在 Facade 模式中 客户是如何使用子系统的 六 应用题 1 请论述在一个系统中应用 Fa ade 外观 模式的必要性 并给出一种解决方案 Fa adeFa ade 外观 模式不仅可以为方法调用创建更简单的接口 还可以减少客户必须处理的对象数量 举个例子 外观 模式不仅可以为方法调用创建更简单的接口 还可以减少客户必须处理的对象数量 举个例子 假设有一个假设有一个 ClientClient 对象 这个对象必须处理对象 这个对象必须处理 DatabaseDatabase ModelModel ElementElement 类的对象 类的对象 ClientClient 必须首先通过必须首先通过 DatabaseDatabase 对象打开数据库 以得到一个对对象打开数据库 以得到一个对 ModelModel 对象的引用 然后再向对象的引用 然后再向 ModelModel 对象请求一个对象请求一个 ElementElement 对象 最后向对象 最后向 ElementElement 对象查询所需的信息 而如果能创建一个对象查询所需的信息 而如果能创建一个 DatabaseFacadeDatabaseFacade 类 让类 让 ClientClient 对象向它发出请求 那么上面的过程可能对象向它发出请求 那么上面的过程可能 就会变得简单一些 就会变得简单一些 2 请举例说明 Facade 模式和 Adapter 模式使用场景的差异 并说明它们的解决方案及表现的特点 第第 7 7 章章 Adapter Adapter 适配器适配器 模式模式 一 选择 1 Adapter 适配器 模式的意图是 A 希望简化现有系统的使用方法 你需要定义自己的借口 B B 将一个无法控制的现有对象与一个特定借口相匹配 将一个无法控制的现有对象与一个特定借口相匹配 C 将一组实现部分从另一组使用它们的对象中分离出来 D 你需要为特定的客户 或情况 提供特定系列的对象 2 下面不属于创建型模式的有 A 抽象工厂模式 Abstract Factory B 工厂方法模式 Factory Method C C 适配器模式 适配器模式 AdapterAdapter D 单例模式 Singleton 3 将一个类的接口转换成客户希望的另一个接口 这句话是对下列哪种模式的描述 A 策略模式 Strategies B 桥接模式 Bridge C C 适配器模式 适配器模式 AdapterAdapter D 单例模式 Singleton 4 以下关于结构型模式说法不正确的是 A 结构型模式可以在不破坏类封装性的基础上 实现新的功能 B B 结构型模式主要用于创建一组对象 结构型模式主要用于创建一组对象 C 结构型模式可以创建一组类的统一访问接口 D 结构型模式可以在不破坏类封装性的基础上 使得类可以同不曾估计到的系统进行交互 二 填空 1 适配器模式 分为类的适配器和对象的适配器两种实现 其中类的适配器采用的是继承关系 而对象适配器采 用的是 组合聚合组合聚合 关系 2 Adapter 模式有两种类型有 对象 Adapter 模式 类类 AdapterAdapter 模式模式 3 UML 是一种用来创建 程序模型程序模型 的图像语言 4 AdapterAdapter 适配器适配器 模式使原本接口不兼容而不能一起工作的类可以一起工作 5 适配器模式 分为类的适配器和对象的适配器两种实现 其中类的适配器采用的是 继承继承 关系 而对象适配 器采用的是组合聚类关系 三 判断 1 对象适配器模式是合成聚合复用原则的典型应用 对对 2 Adapter 模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作 对对 3 Fa ade 模式和 Adapter 模式是相同类型的包装器 错错 4 Adapter 模式不是必须针对某个接口进行设计 错错 四 名词解释 1 Adapter 模式 将一个类的接口转换成客户希望的另外一个接口 将一个类的接口转换成客户希望的另外一个接口 AdapterAdapter 模式使原本由于接口不兼容而不能一起工作的那些模式使原本由于接口不兼容而不能一起工作的那些 类可以一起工作 类可以一起工作 2 对象 Adapter 模式 使用使用 AdapterAdapter 模式与适当的抽象类相匹配 它通常模式与适当的抽象类相匹配 它通常依赖于一个对象 适配对象 包含另一个对象 被适配对象 依赖于一个对象 适配对象 包含另一个对象 被适配对象 3 类 Adapter 模式 当实现当实现 AdapterAdapter 模式的方法是使用多重继承 在这种情况下 它被成为类模式的方法是使用多重继承 在这种情况下 它被成为类 AdapterAdapter 模式 模式 4 多态 相关的对象按照各自类型来实现方法的能力 相关的对象按照各自类型来实现方法的能力 五 简答题 1 给出 Adapter 模式的定义及意图 意图是将一个类的接口转换成客户希望的另外一个接口 意图是将一个类的接口转换成客户希望的另外一个接口 AdapterAdapter 模式使原本由于接口不兼容而不能一起工作模式使原本由于接口不兼容而不能一起工作 的那些类可以一起工作 的那些类可以一起工作 2 Adapter 模式的最常见的用法是什么 该模式可以使你不用操心什么方面 AdapterAdapter 模式最通常的用途就是保持多态 模式最通常的用途就是保持多态 AdapterAdapter 模式让我们在进行设计时不必再担心现存类的接口问题 模式让我们在进行设计时不必再担心现存类的接口问题 3 Adapter 模式问题的解决方案以及如何实现 解决方案是解决方案是 AdapterAdapter 模式用我们需要的接口对无法修改的类进行包装 实现 将现存的类包含在另一个类之中 模式用我们需要的接口对无法修改的类进行包装 实现 将现存的类包含在另一个类之中 包容类与需要的接口相匹配 并调用被包容类的方法 包容类与需要的接口相匹配 并调用被包容类的方法 4 请简要说明在软件设计中设计模式的作用 软件设计模式 软件设计模式 Design PatternDesign Pattern 是一套被反复使用 多数人知晓的 经过分类编目的代码设计经验的总结 是一套被反复使用 多数人知晓的 经过分类编目的代码设计经验的总结 使用设计模式是为了适应需求变化 可重用代码 让代码更使用设计模式是为了适应需求变化 可重用代码 让代码更容易被他人理解 保证代码的可靠性 容易被他人理解 保证代码的可靠性 六 应用题 1 根据你的理解 请分析 Fa ade 模式比 Adapter 模式的相同点和不同点 并说明它们在实际应用中的差异 在两个模式中 都拥有现存的类 但是在在两个模式中 都拥有现存的类 但是在 Fa adeFa ade 模式中 无须针对某个接口进行设计 而在模式中 无须针对某个接口进行设计 而在 AdapterAdapter 模式中模式中 则必须针对某个特定接口进行设计 在则必须针对某个特定接口进行设计 在 Fa adeFa ade 模式中 动机是简化接口 而在模式中 动机是简化接口 而在 AdapterAdapter 模式中 尽管也是越简单模式中 尽管也是越简单 越好 目的是针对一个现有的接口进行设计 并不能简化任何东西 即使可能有另一个更简单的接口 总之 在实越好 目的是针对一个现有的接口进行设计 并不能简化任何东西 即使可能有另一个更简单的接口 总之 在实 际应用中 际应用中 Fa adeFa ade 模式简化接口 模式简化接口 而而 AdapterAdapter 模式将接口转换成另一个现有的接口 模式将接口转换成另一个现有的接口 2 请说明什么是 Adapter 模式 Adapter 模式有哪几种形式 请举例说明 第第 8 8 章章 扩展我们的视野扩展我们的视野 第第 9 9 章章 Bridge Bridge 桥接桥接 模式模式 一 选择 1 关于继承表述错误的是 A 继承是一种通过扩展一个已有对象的实现 从而获得新功能的复用方法 B 超类可以显式地捕获那些公共的属性和方法 子类则通过附加属性和方法来进行实现的扩展 C 在一定意义上说破坏了封装性 因为这会将父类的实现细节暴露给子类 D D 继承本质上是 白盒复用 继承本质上是 白盒复用 对父类的修改 不会影响到子类 对父类的修改 不会影响到子类 2 在不破坏类封装性的基础上 使得类可以同不曾估计到的系统进行交互 主要体现在 A 外观模式 Facade B 装饰模式 Decorator C 策略模式 Strategies D D 桥接模式桥接模式 Bridge Bridge 3 行为类模式使用 在类间分派行为 A 接口 B B 继承机制继承机制 C 对象组合 D 委托 4 下面的类图表示的是哪个设计模式 A 抽象工厂模式 Abstract Factory B 观察者模式 Observer C 策略模式 Strategies D D 桥接模式桥接模式 Bridge Bridge 5 Bridge 桥接 模式的意图是 A 希望简化现有系统的使用方法 你需要定义自己的借口 B 将一个无法控制的现有对象与一个特定借口相匹配 C C 将一组实现部分从另一组使用它们的对象中分离出来 将一组实现部分从另一组使用它们的对象中分离出来 D 你需要为特定的客户 或情况 提供特定系列的对象 6 按照四人团的说法 Bridge 模式的意图是 A A 将抽象部分与它的实现部分将抽象部分与它的实现部分相相分离分离 使它们可以独立地变化使它们可以独立地变化 B 将抽象部分与它的实现部分相分离 但它们不能独立地变化 C 将抽象部分与它的实现部分相结合 但它们可以独立地变化 D 将抽象部分与它的实现部分相结合 使它们相互依赖 7 以下叙述不对的是 A Bridge 模式是将抽象部分与它的实现部分分离 使它们可以独立地变化 B Bridge 模式是发现并封装不同点的极好例子 C C Bridge Bridge 模式优先使用继承而不是组合模式优先使用继承而不是组合 D Bridge 模式优先使用组合而不是继承 8 以下叙述不对的是 A A 学习设计模式学习设计模式告诉我们要尽可能使用继承告诉我们要尽可能使用继承 B 学习设计模式通常可以找到比仅采用面向对象方法更好的解决方案 C 学习设计模式告诉我们要尽可能使用组合 D Bridge 模式适用于一个抽象部分拥有不同的实现部分的情形 9 对 Alexander 的模式哲学 以下叙述正确的是 A 学习设计模式 可以完全解决软件开发中的变化情况 B B 每个模式每个模式 可以无数次使用模式提供的解决方案可以无数次使用模式提供的解决方案 而不必再次重复同样的工作方式而不必再次重复同样的工作方式 C 设计模式总是可以为需求的变化提供更好的解决方案 D 设计模式描述一个在开发的软件环境中不断产生新的问题时 能提供很好的解决方案 10 根据 Coplien 关于共同点 变化点的说法 下面哪个是正确的 A 共同点分析就是寻找一个不会随时间变化的结构 而变化点分析就是捕捉变化的内容 B B 共同点分析是寻找家族成员的相同元素共同点分析是寻找家族成员的相同元素 C 在一个系统中 共同点和不同点的关系是相对的 可以互相转化 D 共同点通常由父类实现 而变化点通常由子类实现 二 填空 1 在存在继承关系的情况下 方法向超类方向集中 而数据向 子类子类 方向集中 2 当存在一个抽象有不同实现时 Bridge 模式最为有用 它可以使抽象和 实现实现 相互独立地进行变化 3 类型的封装类型的封装 是通过多态使用具有派生类的抽象类实现的 4 在进行设计以应对变化的过程中 应该遵循两条基本策略 找出变化并 封装变化点封装变化点 优先使用对象组合 而 不是类继承 5 C 中 必须用一个定义 公共接口公共接口 的抽象类来实现 Bridge 模式的实现部分 6 为了提高内聚和 松耦合松耦合 我们经常会抽象出一些类的公共接口以形成抽象基类或者接口 7 封装性好的代码更容易测试 因为它与其他代码没有 耦合耦合 8 Bridge 桥接 模式是将抽象部分与它的实现部分分离 其中 实现部分实现部分 是指用来实现抽象类的派生类的对 象 9 在进行设计以应对变化的过程中 应该遵循两条基本策略 找出变化并封装变化点 优先使用对象 组合组合 而 不是类继承 三 判断 1 为了提高内聚和紧耦合 我们经常会抽象出一些类的公共接口以形成抽象基类或者接口 错错 2 继承本质上是 白盒复用 对父类的修改 不会影响到子类 错错 3 继承是一种通过扩展一个已有对象的实现 从而获得新功能的复用方法 对对 4 即使在不知道如何实现 Bridge 桥接 模式时 你也可以判断出在这种情况下这个模式是适用的 对对 5 在创建设计以处理变化的过程中 应该优先使用类继承 而不是使用对象组合 错错 6 只有在共同点分析定义的上下文中 变化点才有意义 对对 7 变化点就是领域问题的特殊情形 而共同点则是指一般情形 错错 8 Bridge 模式就是为系统提供一种高内聚 松耦合的解决方案 对对 9 当需要增加系统的功能时 应当采用 Bridge 模式 错错 10 封装就是指数据隐藏 错错 四 名词解释 1 抽象 是指不同事物之间概念上的联系方式 是指不同事物之间概念上的联系方式 2 重构 修改代码改进结构但不增加新功修改代码改进结构但不增加新功能 就是所谓重构 能 就是所谓重构 3 内聚性 指的是例程中操作之间联系的紧密程度 指的是例程中操作之间联系的紧密程度 4 耦合性 指的是两个例程之间联系的紧密程度 指的是两个例程之间联系的紧密程度 5 Bridge 桥梁 模式 将抽象化与实现化脱耦 使得二者可以独立的变化就是说将他们之间的强关联变成弱关联 也就是指在一个软将抽象化与实现化脱耦 使得二者可以独立的变化就是说将他们之间的强关联变成弱关联 也就是指在一个软 件系统的抽象化和实现化之间使用组合件系统的抽象化和实现化之间使用组合 聚合关系而不是继承关系 从而使两者可以独立的变化 聚合关系而不是继承关系 从而使两者可以独立的变化 五 简答题 1 Bridge 模式要解决的基本问题是什么 BridgeBridge 桥接 模式适用于一个抽象部分拥有不同的实现部分的情况 它让抽象部分和实现部分可以各自独立 桥接 模式适用于一个抽象部分拥有不同的实现部分的情况 它让抽象部分和实现部分可以各自独立 的变的变化 化 2 给出 Bridge 模式的定义 采用 Bridge 模式的效果是什么 将抽象化与实现化脱耦 使得二者可以独立的变化 也就是说将他们之间的强关联变成弱关联 也就是指在一将抽象化与实现化脱耦 使得二者可以独立的变化 也就是说将他们之间的强关联变成弱关联 也就是指在一 个软件系统的抽象化和实现化之间使用组合个软件系统的抽象化和实现化之间使用组合 聚合关系而不是继承关系 从而使两者可以独立的变化 效果是 实聚合关系而不是继承关系 从而使两者可以独立的变化 效果是 实 现部分与使用它的对象的分离 增加了灵活性 客户对象不需要了解实现问题 现部分与使用它的对象的分离 增加了灵活性 客户对象不需要了解实现问题 3 什么是 一条规则 一个地方 抽象类经常让自己的方法实际使用实现部分对象 抽象部分的派生类将调用这些方法 这样如果需要修改 修抽象类经常让自己的方法实际使用实现部分对象 抽象部分的派生类将调用这些方法 这样如果需要修改 修 改也会容易些 并且在实现整个模改也会容易些 并且在实现整个模式之前让你拥有一个好的起点 式之前让你拥有一个好的起点 4 在学习 Bridge 桥接 模式的过程中 应该遵循下列处理变化的基本策略是什么 找出变化并封装变化点 优先使用对象组合 而不是类继承 找出变化并封装变化点 优先使用对象组合 而不是类继承 5 Bridge 桥接 模式的解决方案是什么 以及如何实现 解决的问题是 为所有的实现部分定义一个接口 让抽象类的所有派生类使用这个接口 实现 将实现部分封解决的问题是 为所有的实现部分定义一个接口 让抽象类的所有派生类使用这个接口 实现 将实现部分封 装在一个抽象类中 在被实现的抽象部分基类中包含一个实现部分基类的句柄 装在一个抽象类中 在被实现的抽象部分基类中包含一个实现部分基类的句柄 六 应用题 1 根据你对 Bridge 模式的理解 概要描述使用该模式的应用要求 并给出相应的设计类图 当存在一个抽象有不同实现时当存在一个抽象有不同实现时 BridgeBridge 模式最为有用 它可以使抽象和实现相互独立地进行变化 模式最为有用 它可以使抽象和实现相互独立地进行变化 2 举例说明使用 Bridge 模式的场合 给出在该场合下使用 Bridge 模式的解决方案 并说明该解决方案的优点 打印驱动程序是打印驱动程序是 BridgeBridge 模式最典型的例子 也是最适合应用模式最典型的例子 也是最适合应用 BridgeBridge 模式的场合 模式的场合 BridgeBridge 模式的真正威力在模式的真正威力在 于它能够帮助我们看到什么时候应该从问题域中提取实现 也就是说 有时候有一个实体于它能够帮助我们看到什么时候应该从问题域中提取实现 也就是说 有时候有一个实体 X X 使用系统使用系统 S S 一个实体 一个实体 Y Y 使用系统使用系统 T T 我们可能认为 我们可能认为 X X 总是与总是与 S S 相伴 而相伴 而 Y Y 总是与总是与 T T 相伴 因此就将它们联系 耦合 起来 相伴 因此就将它们联系 耦合 起来 BridgeBridge 模式模式 提醒我们 可以抽象出提醒我们 可以抽象出 S S 和和 T T 这样更好 也就是说 这样更好 也就是说 BridgeBridge 模式最有用的地方 是在解耦抽象与实现之前考虑模式最有用的地方 是在解耦抽象与实现之前考虑 BridgeBridge 模式是否适用 模式是否适用 第第 1010 章章 Abstract Factory Abstract Factory 抽象工厂抽象工厂 模式模式 一 选择 1 静态工厂的核心角色是 A A 抽象产品抽象产品 B 具体产品 C 静态工厂 D 消费者 2 以下属于创建型模式的是 A A 抽象工厂模式 抽象工厂模式 Abstract FactoryAbstract Factory B 装饰模式 Decorator C 外观模式 Facade D 桥接模式 Bridge 3 下面的类图表示的是哪个设计模式 A A 抽象工厂模式抽象工厂模式 B 观察者模式 C 策略模式 D 桥接模式 4 Abstract Factory 抽象工厂 模式的意图是 A 希望简化现有系统的使用方法 你需要定义自己的借口 B 将一个无法控制的现有对象与一个特定借口相匹配 C 将一组实现部分从另一组使用它们的对象中分离出来 D D 提供一个创建一系列相关或相互依赖对象的接口 而无 提供一个创建一系列相关或相互依赖对象的接口 而无需指定它们具体的类需指定它们具体的类 5 在根据不同的机器选择设备驱动程序的案例中 以下叙述不准确的是 A 可以使用 switch 语句选择驱动程序 B 可以使用继承来实现选择驱动程序 但它可能会产生类组合爆炸问题 C 可以选择抽象工厂模式实现 且能避免组合爆炸问题 D D 使用继承的解决方案要比使用继承的解决方案要比 switchswitch 语句有更多的优势语句有更多的优势 6 以下有关 Abstract Factory 抽象工厂 模式正确的是 A Abstract Factory 的实例化方法就是具体工厂方法 B AbstractB Abstract FactoryFactory 类和具体工厂方法可以分离类和具体工厂方法可以分离 每个具体工厂负责一个抽象工厂方法接口的实现每个具体工厂负责一个抽象工厂方法接口的实现 C 由于 Abstract Factory 类和具体工厂方法可以分离 因此在实现时会产生更多的类 D 当问题存在相同的对象用于解决不同的情形时 应该使用抽象工厂模式 7 根据 设计模式 有关抽象工厂模式的定义 准确的说法是 A 工厂方法是一个抽象类的派生类实现的 B B 要创造的东西本身是抽象定义的 工厂方法可以灵活实现 要创造的东西本身是抽象定义的 工厂方法可以灵活实现 C 抽象工厂只关注概念 而具体工厂创建抽象工厂 D 抽象工厂派生出具体工厂对象和实现方法 8 关于抽象工厂模式 以下叙述不正确的是 A A 客户对象不需要知道向谁请求所需的对象和如何使用这些对象 客户对象不需要知道向谁请求所需的对象和如何使用这些对象 B 抽象工厂类通过为每个不同类型的对象定义一个方法 来指定实例化哪个对象 C 具体工厂对象负责指定哪些对象要实例化 D 将抽象工厂模式和适配器模式结合在一起 可以将概念相似的对象当作同种对象处理 9 关于抽象工厂模式 Abstract Factory 以下叙述正确的是 A 抽象工厂相对具体工厂而言 可以理解为抽象工厂是抽象类 而具体工厂是对抽象工厂的继承 是抽象工厂 的子类 B 抽象工厂类不能实例化 具体工厂可以实例化 C C 抽象工厂定义接口 具体工厂实现某一接口 抽象工厂定义接口 具体工厂实现某一接口 D 抽象工厂模式将使用哪些对象的规则与如何使用这些对象的逻辑有效地结合起来 10 下面属于创建型模式的有 A A 抽象工厂 抽象工厂 Abstract Factory Abstract Factory 模式 模式 B 外观 Facade 模式 C 适配器 Adapter 模式 D 桥接 Bridge 模式 二 填空 1 抽象工厂抽象工厂 模式提供了一系列相关或相互依赖对象的接口而无需指定他们具体的类 2 工厂模式分为简单工厂 工厂方法 工厂方法工厂方法 三种类型 3 Abstract Factory 模式就是用来解决这类问题的 要创建一组相关或者 相互依赖相互依赖 的对象 4 Abstract Factory 模式强调的是为创建多个相互依赖的对象提供一个 同一的接口同一的接口 5 我们可以使用 抽象工厂抽象工厂 模式 不同应用程序都使用同一子系统 6 Abstract Factory 意图提供一个创建一系列相关或相互依赖对象的接口 而无需指定它们 具体的类具体的类 7 当一个系统要 独立独立 于它的产品的创建 组合和表示时适合用 Abstract Factory 模式 8 Abstract Factory 模式为如何创建对象组的每个成员定义 接口接口 9 抽象工厂模式是定义一个 抽象类抽象类 然后为每个组实现一个具体类 10 Abstract Factory 模式将如何执行对象 实例化实例化 规则从使用这些对象的客户对象提取出来 三 判断 1 抽象工厂模式提供了一系列相关或相互依赖对象的接口且必须指定他们具体的类 错错 2 Abstract Factory 抽象工厂 模式确保系统总能根据当前的情况获得合适的对象 对对 3 Abstract Factory 抽象工厂 模式中 客户对象不需知道 向谁请求需要的对象 如何使用这些对象 错错 4 典型情况下 一个 Abstract Factory 对象将针对每种必须实例化的对象拥有一个方法 对对 5 决定需要哪个工厂对象 实际上是判断需要那个系列的对象 对对 6 从本质上看 switch 语句可以达到和抽象工厂相同的效果 错错 7 抽象工厂模式简化了设计过程 错错 8 一个抽象工厂对象总是要和一个具体工厂方法对象相结合 错错 9 抽象工厂模式告诉我们 要针对接口而不是实现进行设计 对对 10 使用抽象工厂方法与优先使用组合是相矛盾的 错错 四 名词解释 1 Abstract Factory 抽象工厂 模式 就是用来解决这类问题的 要创建一组相关或者相互依赖的对象 就是用来解决这类问题的 要创建一组相关或者相互依赖的对象 2 组合爆炸 随着问题中元素的增加 所出现的可能组合数剧烈增加 形象的说法就是组合爆炸 随着问题中元素的增加 所出现的可能组合数剧烈增加 形象的说法就是组合爆炸 3 封装 任何形式的隐藏 对象对它们的数据进行封装 抽象类对它们派生出的具体类进行封装任何形式的隐藏 对象对它们的数据进行封装 抽象类对它们派生出的具体类进行封装 4 抽象类 为一组概念上相似的类定义方法和公共属性 抽象类绝对不能被实例化 为一组概念上相似的类定义方法和公共属性 抽象类绝对不能被实例化 5 具体类 是能被直接实例化的类 用例 信号 其他类元或其他泛化元是能被直接实例化的类 用例 信号 其他类元或其他泛化元素 它也可以用来描述实现的操作 素 它也可以用来描述实现的操作 五 简答题 1 Abstract Factory 的三个关键策略是什么 发现并封装变化点 优先使用对象组合 而不是类继承 针对接口设计 而不是针对实现设计 发现并封装变化点 优先使用对象组合 而不是类继承 针对接口设计 而不是针对实现设计 2 采用 Abstract Factory 模式的效果是什么 效果 这个模式将 使用哪些对象 的规则与 如何使用这些对象 的逻辑相隔离 效果 这个模式将 使用哪些对象 的规则与 如何使用这些对象 的逻辑相隔离 3 为什么这个模式被称为 Abstract Factory 因为它要创建的东西本身是由抽象定义的 工厂各种变化的实现如何选择 模式并没有具体规定 因为它要创建的东西本身是由抽象定义的 工厂各种变化的实现如何选择 模式并没有具体规定 4 如何获得正确的工厂对象 决定需要哪个工厂对象实际上是判断需要哪个系列的对象 如何知道自己需要哪个系列呢 在类似的案例中 决定需要哪个工厂对象实际上是判断需要哪个系列的对象 如何知道自己需要哪个系列呢 在类似的案例中 最可能的是由一个配置文件来告诉我们 然后就可以写几行代码 根据这些配置信息来将合适的工厂对象实例化 最可能的是由一个配置文件来告诉我们 然后就可以写几行代码 根据这些配置信息来将合适的工厂对象实例化 5 在 Abstract Factory 抽象工厂 模式中对象的角色是什么 客户对象只知道 向谁请求需要的对象 和 如何使用这些对象 客户对象只知道 向谁请求需要的对象 和 如何使用这些对象 Abstract FactoryAbstract Factory 类通过 为每种不同类类通过 为每种不同类 型的对象定义一个方法来指定 哪些对象可以被实例化 典型情况下 一个型的对象定义一个方法来指定 哪些对象可以被实例化 典型情况下 一个 Abstract FactorAbstract Factor 对象将针对每对象将针对每种必须种必须 实例化的对象拥有一个方法 具体工厂指定哪些对象将被实例化 实例化的对象拥有一个方法 具体工厂指定哪些对象将被实例化 六 应用题 1 请结合抽象工厂模式 说明在实际应用中如何生成正确的对象 决定需要哪个工厂对象实际上与确定使用哪一组对象是相同的 例如 在驱动程序问题中 有一组低分辨率动决定需要哪个工厂对象实际上与确定使用哪一组对象是相同的 例如 在驱动程序问题中 有一组低分辨率动 程序和一组高分辨率驱动程序 怎样才能知道自己需要哪一组呢 程序和一组高分辨率驱动程序 怎样才能知道自己需要哪一组呢 在类似这样的例子中 很可能通过一个配置文在类似这样的例子中 很可能通过一个配置文 件获知这一信息 然后可以编写几行代码 根据配置信息将合适的工厂对象实例化 还可以使用件获知这一信息 然后可以编写几行代码 根据配置信息将合适的工厂对象实例化 还可以使用 Abstract FactoryAbstract Factory 模式 不同应用程序都使用同一子系统 在这种情况下 工厂对模式 不同应用程序都使用同一子系统 在这种情况下 工厂对象将传给子系统 告诉子系统将要使用哪些对象 象将传给子系统 告诉子系统将要使用哪些对象 此时 通常主系统知道子系统需要那一组对象 在调用子系统之前 将实例化正确的工厂对象 此时 通常主系统知道子系统需要那一组对象 在调用子系统之前 将实例化正确的工厂对象 2 在抽象工厂模式中 有哪两种工厂 它们的作用什么 使用抽象工厂模式有什么优点 第第 1212 章章 用模式解决用模式解决 CAD CAMCAD CAM 问题问题 一 选择 1 应用设计模式的一个优点是 A A 适应需求变化 适应需求变化 B 程序易于理解 C 减少开发过程中的代码开发工作量 D 简化软件系统的设计 2 当我们想创建一个具体的对象而又不希望指定具体的类时 可以使用 模式 A A 创建型创建型 B 结构型 C 行为型 D 以上都可以 3 实现部分各不相同 但都可以通过一个通用接口被访问是 模式中的包容变化 A BridgeA Bridge B Abstract Factory C Adapter D Facade 4 以下哪一条是 Alexander 的场景原则 A 在对象实例化之前 要考虑它的实例化 B B 当你有一个涉及创建对象的设计模式时 当你有一个涉及创建对象的设计模式时 对象应为模式提供场景 对象应为模式提供场景 C 模式的选取与场景无关 D 在一个系统中 由于模式之间的作用是相互的 不存在最高级别的模式 5 最高级别的模式约束其他的模式的不正确的叙述是 A 最高级别的模式决定其它模式的作用 B B 最高级别的模式是最重要的 其他的模式是次要的 最高级别的模式是最重要的 其他的模式是次要的 C 最高级别的模式为其它模式提供场景 D 最高级别的模式也可称为场景确定模式 二 填空 1 设计模式的思想根源是 开闭开闭 基本原则的宏观运用 本质上是没有任何模式的 发现模式的人永远是大师 而死 守模式的人 最多只能是一个工匠 2 模式不仅仅是包容变化 它们还是变化之间的 关联关联 3 系统中为其他模式确定场景的一个或两个模式 这个模式将对其他模式能做的事进行 约束约束 4 通常情况下 当一个模式使用另一个模式时 看起来被使用模式是在使用模式的 场景场景 之中的 5 系统中的一个模式经常通过为系统中的其他模式提供 场景场景 与其他模式相关联 三 判断 1 识别可能性不等于必须跟着可能性走 对对 2 认为一个实际不会出现的模式出现会起反作用 错错 3 对象适配器模式是依赖倒转原则的典型应用 错错 4 通过在问题领域中使用模式 可以用一种不同的方式来看待问题 对对 5 当有一个涉及创建对象的设计模式时 这些对象为这个模式提供场景 对对 四 名词解释 1 场景 一些事物存在或发生的相互关联的状态 一些事物存在或发生的相互关联的状态 2 CVA 共同点共同点 变化点分析变化点分析 3 场景原则 当有一个涉及创建对象的设计模式时 这些对象为这个模式提供场景 当有一个涉及创建对象的设计模式时 这些对象为这个模式提供场景 4 公开接口 5 多态 五 简答题 1 考虑场景时使用的一条原则是什么 考虑在系统中需要什么 然后再关心如何实现它 这也符合考虑在系统中需要什么 然后再关心如何实现它 这也符合 AlexanderAlexander 的场景原则 当有一个涉及创建对象的的场景原则 当有一个涉及创建对象的 设计模式时 这些对象为这个模式提设计模式时 这些对象为这个模式提供场景 供场景 2 用模式的方法思考的步骤是什么 发现在问题领域中拥有的模式 这些是需要分析的模式 对于这些需要分析的模式 做下列工作 发现在问题领域中拥有的模式 这些是需要分析的模式 对于这些需要分析的模式 做下列工作 a a 挑出为其挑出为其 他模式提供最多场景的模式 他模式提供最多场景的模式 b b 在我的概念性最高的设计中使用这个模式 在我的概念性最高的设计中使用这个模式 c c 识别任何可能已经出现的附加模式 识别任何可能已经出现的附加模式 将它们添加到 需要分析的模式中 将它们添加到 需要分析的模式中 d d 对于需要分析而还未分析的模式 重复上述过程 对于需要分析而还未分析的模式 重复上述过程 按照需要将细节添加到按照需要将细节添加到 设计中 扩展方法和类定义 设计中 扩展方法和类定义 3 场景和被使用模式之间有什么关联 通常情况下 当一个模式使用另一个模式时 看起来被使用模式是在使用模式的场景之中的 这条通常情况下 当一个模式使用另一个模式时 看起来被使用模式是在使用模式的场景之中的 这条规则也可能规则也可能 有例外 但是看起在大多数时候它都是有效的 有例外 但是看起在大多数时候它都是有效的 4 什么是 最高模式 指系统中为其他模式建立背景的一两个模式 这个模式将约束其他模式的行为 指系统中为其他模式建立背景的一两个模式 这个模式将约束其他模式的行为 5 为一个庞大的工程的 CAD CAM 系统提供支持的基本需求是什么 创建一个计算机程序 它能读取一个创建一个计算机程序 它能读取一个 CAD CAMCAD CAM 数据集并从中提取部件 一个现有的专家系统需要这些部件才能数据集并从中提取部件 一个现有的专家系统需要这些部件才能 进行智能设计 这个系统应该向进行智能设计 这个系统应该向 CAD CAMCAD CAM 系统屏蔽专家系统 复杂的是系统屏蔽专家系统 复杂的是 CAD CAMCAD CAM 系统正处于变化之中 可能有系统正处于变化之中 可能有 CAD CAMCAD CAM 系统的多个潜在版本存在 而专家系统需要拥有它们的接口 系统的多个潜在版本存在 而专家系统需要拥有它们的接口 六 应用题 1 在 CAD CAM 问题中 Abstract Factory 模式被排除在 最高 模式之外 请举例说明为什么 使用使用 Abstract Factory 模式的根本理由在于 如果有一个模式的根本理由在于 如果有一个 V1 系统或者系统或者 V2 系统 需要确保所有的实现对象都是系统 需要确保所有的实现对象都是 V1 类型或者类型或者 V2 类型的 但是类型的 但是 Model 对象本身已经知道这一点 如果其他对象可以很容易地封装创建规则 就没有对象本身已经知道这一点 如果其他对象可以很容易地封装创建规则 就没有 必要再实现一个模式 之所以将必要再实现一个模式 之所以将 Abstract Factory 模式保留在模式集合中 是因为第一次解决这个问题时 存在模式保留在模式集合中 是因为第一次解决这个问题时 存在 Abstract Factory 模式 这也说明了 认为存在模式 这也说明了 认为存在一个其实并不存在的模式 未必会有什么副作用 一个其实并不存在的模式 未必会有什么副作用 第第 1313 章章 设计模式的原则和策略设计模式的原则和策略 一 选择 1 Open Close 原则的含义是一个软件实体 A A 应当对扩展开放 对修改关闭应当对扩展开放 对修改关闭 B 应当对修改开放 对扩展关闭 C 应当对继承开放 对修改关闭 D 以上都不对 2 典型情况下 模式不包容变化 A Bridge B Abstract Factory C Adapter D FacadeD Facade 3 下列属于设计模式基本原则的是 A 继承 B 封装 C C 开放开放 封闭封闭 D 都不是 4 常用的设计模式可分为 A A 创建型 结构型和行为型创建型 结构型和行为型 B 对象型 结构型和行为型 C 过程型 创建型和结构型 D 抽象型 接口型和实现型 5 以下哪一条不属于设计模式的基本原则 A 开放 封闭原则 B 根据场景进行设计的原则 C C 优先使用继承的原则 优先使用继承的原则 D 包容变化的原则 二 填空 1 设计模式基本原则包括 开闭原则 根据场景进行设计的原则根据场景进行设计的原则 包容变化原则 2 最基本的 UML 图是 类图类图 它不仅描述了类 而且说明了类之间的关系 3 模块 方法和类应该对扩展是开放的 而对更改是 封闭封闭 的 4 Alexander 告诉我们要从 场景场景 进行设计 在设计我们的片段出现的细节之前先创建整体视图 5 Bridge 模式不仅仅对抽象部分和实现部分的变化进行定义和包容 而且还定义了两个变化之间的 关联关联 三 判断 1 抽象不应该依赖于

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论