资源描述
设讣模式试题 一选择1. 设计模式具有的优点()oB.程序易于理解D.简化软件系统的设计B不同问题的同一表相D.以上都不是B.对象组合与类的继承D.系统复用与系统扩展B)针对接口编程D)设计应支持变化A. 适应爲求变化C.减少开发过程中的代码开发工作就2. 设计模式一般用来解决什么样的问题()。A. 同一问题的不同表相C.不同问题的不同表相3. 设讣模式的两人主题是()。A. 系统的维沪与开发C.系统架构与系统开发4以卜哪些问题通过应用设计模式不能够解决。0 A)指定对彖的接口C)确定软件的功能都正确实现二填空1. 模式的基本更素包括名称、意图、问题、解决方案、参与者和协作者、(效果)、实现、GcF参考。2. 设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。3. 设计模式是一个(抽象)的方案,它可以解决一类问题。4. 1.在设讣模式群体中,效果是指(原因和结果)。三.判断1. 适配器模式属于创建型模式。错2. 在设计模式中,“效果”只是指“原因和结果”。对3. 设计模式使代码编制不能真正工程化。错4. 设计模式的曲大主题是系统复用与系统扩展。对四.名词解释1. 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结.使用设计模式是为了可重用代码、 让代码更容易被他人理解.保证代码可靠性2. 模板模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中3. 模式就是解决某一类问题的方法论把解决某类问题的方法总结归纳到理论高度,那就是模式.4. 内聚度模块内部各成分彼此结合的紧密程度五简答题1 什么是役讣模式?设讣模式的日标是什么?设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码 设计经验的总结使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性2. 设计模式的基本要素有哪些?名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF参考.3. 设计模式中一般都遵循的原则有什么?开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则4四人团针对紀创建优秀面向对彖役讣”建议了哪些策略?针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点.笫6章facade (外观)模式选择外观模式的作用是()。A.当不能采用生成子类的方法进行扩充时,动态地给一个対象添加一些 额外的功能 B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更 加容易使用.C.保证一个类仅有一个实例,并捉供一个访问他的全局访问点。D.在方法中定义算法的框架, 而将算法中的一些操作步骤延迟到子类中实现。1. Facade (外观)模式的总:图是()。A. 希望简化现有系统的使用方法,你需要定义自己的接口.B. 将一个无法控制的现有对象与一个特定借口相匹配。C. 将一组实现部分从另一组使用它们的对象中分离出來。D.你需耍为特定的客户(或情况) 提供特定系列的对象。2. ()模式定义了一个高戻接口,这个接口使得这一了系统更加容易使用。A. Adapter (适配器)模式 C. Strategy (策略)模式4. 下面属于结构模式的有()。 A观察者模式(Observer) C.策略模式(Strategy) 二填空B. Bridge (桥接)模式D. Facade (外观)模式B单例模式(Singleton)D.外观模式(Fafade)1. Facade模式可以用來(隐藏)系统。该模式能够将系统作为自己的私有成员包含进来。2. Facade模式要解决的问题:只需要使用一个复杂系统的个(子集)。或者,需要用一种特殊的方式与系统交互.3. Facade模式不仅可以为方法调川创建更(简单)的接口还可以减少客户必须处理的对象数量。4 Facade外观模式的解决方案是向客户展现使用现有系统的 个新的(接口)。三.判断1. Facade (外观)模式不仅可以为方法调用创建更简单的接【1,还可以减少客户必须处理的对象数吊。对2. 外观模式,当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。错3. Facade模式为子系统中的一组接口提供的界面可能不一致。错4. Facade外观模式只能为方法调用创建更简单的接口,不能减少客户必须处理的对象数量。错四. 名词解释1. Fagde模式模式定义了一个高层接口,使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面.2. 接口包含了一系列不被实现的方法,而把这些方法的实现交给继承它的类.3. 组合一个类是另一个类的组成成分4. 耦合度对模块间关联程度的度疑.五简答题1. Facade (外观)模式解决问题的方案是什么?如何实现?Facade向客户展现使用现有系统的一个新的接口如何实现:定义一个(或一组新的类来封装所需的接口. 让新的类使用现有的系统.2请简要说明在一个复杂系统中应用Facade (外观)模式的优点。当拥有一个复杂的系统时,Fapad (外观)模 式使我们只需要使用它的一部分功能.最终我们将得到一个更简单,更容易使用的或根据我们的爲要定制的系统.3. Facade模式的息图是什么?望那个简化现有系统的使用方海 需要定义自己的接口4. 任Facade模式中,客户是如何使用子系统的?六.应用题1 请论述任一个系统中应用Facade (外观)模式的必要性,并给出一种解决方案。Fade (外观模式不仅可以 为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量.举个例子.假设有一个Client对氧 这个对象必须处理Database Model. Element类的对象Client必须首先通过Database 对象打开数据库.以得到一个对Model对象的引用,然后再向Model对象请求一个Element对象,最后向Element 对象查询所需的信息而如果能创建一个DatabaseFacade类,让Client对象向它发出请求,那么上面的过程可能 就会变得简单一些2请举例说明Facade模式和Adapter模式使用场景的差异,并说明它们的解决方案及表现的特点第7章Adapter (fi配器)模式=选择1. Adapter (适配器)模式的总图是()。A. 希望简化现冇系统的使用方法.你需要定义白己的借口。B.将一个无法控制的现有对象与 一个特定借口相匹配C. 将一组实现部分从另一组使用它们的对象中分离出來。D.你需耍为特定的客户(或情况) 提供特定系列的对象。2. 下面不属于创建型模式的有()oA. 抽象工厂模式(Abstract Factory ) B.工厂方法模式(Factory Method)C.适配器模式(Adapter)D.单例模式(Smgleton)3. 将一个类的接口转换成客户希望的另一个接口。这句话是对下列哪种模式的描述()oA策略模式(Strategies) B.桥接模式(Bridge)C.适配器模式(Adapter) D.单例模式(Singleton)4以下关于结构型模式说法不正确的是。0A)结构型模式可以在不 破坏类封装性的垄础上,实现新的功能。B)结构型模式主要用于 创建一组对象 C)结构型模式可以创建一组类的统一访问接口。D)结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾佔计到的系统进行交互。二. 填空1. 适配器模式,分为类的适配器和对象的适配器两种实现。其屮类的适配器采用的是继承关系,而对象适配器采 用的是(组合聚合)关系。2. Adapter模式有两种类型有:对象Adapter模式、3. UML足一种用來创建(程序模型)的图像语言。4. (Adapter适配器)模式使原本接不兼容而不能一起I作的类川以一起匸作。5. 适配器模式,分为类的适配器和对象的适配器两种实现。其屮类的适配器采用的是(继承)关系,而对象适配 器采用的是组合聚类关系。1. 对象适配器模式是合成聚合复用原则的典型应用。对2. Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。对3. Facade模式和Adapter模式是相同类型的包装器。错4. Adapter模式不是必须针对某个接口进行设计。错四名词解释1. Adapter 模式将一个类的接口转换成客户希望的另外一个接口 Adapter模式使原本由于接口不兼容而不能一起工作的那些 类可以一起工作.2. 对象Adapter模式使用Adapter模式与适当的抽象类相匹配,它通常依赖于f 对象(适配对象)包含另一个对象(被适配对象)3. 类Adapter模式当实现Adapter模式的方法是使用多重继承。在这种情况下,它被成为类Adapter模式。4 多态相关的对象按照各自类型来实现方法的能力.五.简答题1. 给出Adapter模式的定义及总图。意图是将一个类的接口转换成客户希望的另外一个接口 Adapter模式使原本由于接口不兼容而不能一起工作 的那些类可以一起工作2. Adapter模式的最常见的用法是什么?该模式可以使你不用操心什么方面?Adapter模式最通常的用绘就是保持多态.Adapter模式让我们在进行设计时不必再担心现存类的接口问题.3. Adapter模式问題的解决方案以及如何实现?解决方案是Adapter模式用我们需要的接口对无法修改的类进行包装.实现:将现存的类包含在另一个类之中. 包容类与需要的接口相匹配,并调用被包容类的方法.4.请简要说明在软件设计中设计模式的作用?软件设计模式(Design Pattern)是一套被反复使用、多数人知晓的.经过分类编目的代码设计经验的总结 使用设计模式是为了适应需求变化.可重用代码.让代码更容易被他人理解.保证代码的可靠性.六.应用题1. 根据你的理解,请分析Facade模式比Adapter模式的相同点和不同点,并说明它们在实际应川中的筮异?在两 个模式中,都拥有现存的类.但是在Facade模式中,无须针对某个接口进行设计;而在Adapter模式中 则必须针对某个蒔定接口进行设计在Fade模式中,动机是简化接口,而在Adapter模式中,尽骨也是越简单 越好,目的是针对一个现有的接口进行设计,并不能简化任何东西,即使可能有另一个更简单的接口.总之,在实 际应用中.Facade模式简化接口,而Adapter模式将接口转换成另一个现有的接口.2请说明什么是Adapter模式,Adapter模式有哪儿种形式?请举例说明?笫8章扩展我们的视野第9章Bridge (桥接)模式一选择1. 关于继承表述错误的是:(九人继承是一种通过扩展一个己有对象的实现,从而获得新功能的 复用方法。B.超类可以显式地捕获那些公共的属性和方法。子类则通过附加属性和方法來进行 实现的扩展。C在一定意义上说破坏了封装性,因为这会将父类的实现细节眾露给子类。D继 承本质上是“白盒复用J对父类的修改,不会杉响到子类.2. 在不破坏类封装性的基础上,使得类可以同小曾估计到的系统进行交互。主姿体现在()oA外观模式(Facade)B装饰模式(Decorator)C策略模式(Strategies)D桥接模式(Bridge)3. 行为类模式使用()在类间分派行为。A接口 B继承机制C对象组合D委托4. 下面的类图表示的是哪个设计模式?().A抽象工厂模式(Abstract Factory) B观察者模式(Observer)C策略模式(Strategies)D桥接模式(Bridge)5. Bridge (桥接)模式的意图是()A希望简化现有系统的使用方法.你需要定义自己的借口。B.将一个无法控制的现有对象与一个特定借口相 匹配。C.将一组实现部分从另一组使用它们的对彖中分离出来.D.你需耍为特定的客户(或情况)提供特定系列的 对象。6. 按照四人团的说法.Bridget式的意图是()。A. 将抽象部分与它的实现部分相分离,使它们可以独立地变化.B. 将抽象部分与它的实现部分相分离,但它们不能独立地变化.C. 将抽象部分与它的实现部分相结合,但它们可以独立地变化.D. 将抽象部分与它的实现部分相结合,使它们相互依赖.7. 以下叙述不对的是().A. Bridge模式是将抽象部分与它的实现部分分离,使它们可以独立地变化.B. Bridge模式是发现并封装不同点的极好例子.C. Bridge模式优先使用继承而不是组合.D. Bridge 式优先使用组合而不是继承.8. 以下叙述不对的是()。A. 学习设计模式告诉我们要尽可能使用继承.B. 学习设计模式通常可以找到比仅采用面向对象方法更好的解决方案.C. 学习设计模式告诉我们要尽可能使用组合.D. Bridge模式适用于一个抽象部分拥有不同的实现部分的情形9. 对Alexander的模式哲学,以下叙述正确的是().A学习设计模式,可以完全解决软件开发中的变化悄况.B. 毎个模式,可以无数次使用模式提供的解决方案,而不必再次畫复同样的工作方式.C. 设计模式总是可以为需求的变化提供更好的解决方案.D. 设汁模式描述-个任开发的软件坏境中不断产生新的问題时,能提供很好的解决方案.10. 根据Coplien关于共同点/变化点的说法,下面哪个是正确的()oA. 共同点分析就是寻找一个不会随时间变化的结构,而变化点分析就是捕捉变化的内容.B. 共同点分析是寻找家族成员的相同元素.C. 在一个系统中,共同点和不同点的关系是相对的,可以互相转化.D. 共同点通常由父类实现,而变化点通常由子类实现.二填空1. 在存在继承关系的惜况卜,方法向超类方向集中,而数据向(子类)方向集中.2. 当存在一个拍象有不同实现时Bridge模式最为有用,它可以使抽象和(实现)相互独立地进行变化。3. (类型的封装)是通过多态使用具有派生类的抽象类实现的。4. 在进行设计以应对变化的过程中,应该遵循两条基本策略:找出变化并(封装变化点);优先使用对象组合,而 不是类继承。5. C+中,必须用一个定义(公共接口)的抽象类来实现Bridge模式的实现部分。6. 为了提高内聚和(松耦合),我们经常会抽象出一些类的公共接II以形成抽象基类或者接【17. 封装性好的代码更容易测试,因为它与其他代码没有(耦合)。8. Bridge (桥接)模式足将抽象部分与它的实现部分分离,其屮(实现部分)足指用來实现抽象类的派生类的对 象。9. 在进行设讣以应对变化的过程中,应该遵循两条基本策略:找出变化并封装变化点;优先使用对象(组合),而 不是类继承。三.判断1. 为了提高内聚和紧耦合,我们经常会抽象出一些类的公共接口以形成抽彖基类或者接口。错2. 继承本质上是“白盒复用”,对父类的修改,不会影响到子类。错3. 继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。对4. 即使在不知道如何实现Bridge (桥接)模式时,你也可以判断出在这种情况下这个模式足适川的。对5. 在创建设计以处理变化的过程中,应该优先使用类继承,而不是使用对象组合。错6. 只有在共同点分析定义的上下文中,变化点才有意义。对7. 变化点就是领域问题的特殊情形,而共同点则是指-般情形。错8. Bridge模式就是为系统提供一种高内聚,松耦合的解决方案。对9. 当需要增加系统的功能时应当采用Bridge模式.错封装就是指数据隐藏。错四名词解释1. 抽象是指不同事物之间概念上的联系方式.2. 亜构修改代码改进结构但不増加新功能,就是所谓重构.3. 内聚性 指的是例程中操作之间联系的紧密程度.4. 耦合性指的是两个例程之间联系的紧密程度.5. Bridge (桥梁)模式将抽象化与实现化脱耦,使得二者可以独立的变化就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化 K.简答 题1. Bridge模式要解决的基本问题是什么? Bridge (桥接)模式适用于一个抽象部分拥有不同的实现部分的情况,它让抽象部分和实现部分可以各自独立的变化.2. 给出Bridge模式的定义。采用Bridge模式的效果是什么?将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化效果是:“实 现部分与使用它的对象的分离”増加了灵活性客户对象不需要了解实现问题.3. 什么是条规则,一个地方” ?抽象类经常让自己的方法实际使用实现部分对象抽象部分的派生类将调用这些方法.这样如果需要修改,修改也会容易些,并且在实现整个模式之前让你拥有一个好的起点4任学习Bridge (桥接)模式的过程中,应该遵循卜列处理变化的棊本策略是什么?找出变化并封装变化点; 优先使用对象组合,而不是类继承5. Bridge (桥接)模式的解决方案是什么,以及如何实现?解决的问题是:为所有的实现部分定义一个接口,让 抽象类的所有派生类使用这个接口实现:将实现部分封装在一个抽象类中.在被实现的抽象部分基类中包含一个实现部分基类的句柄六应川题1. 根据你对Bridge模式的理解,概要描述使川该模式的应川要求,并给出相应的设il类图。当存在一个抽象有不同实现时Bridge模式最为有用,它可以使抽象和实现相互独立地进行变化2. 举例说明使用Bridge模式的场合,给出在该场合下使用Bridge模式的解决方案,并说明该解决方案的优点。打印驱动程序是Bridge模式最典型的例子.也是最适合应用Bridge模式的场合.Bridge模式的真正威力在于 它能够帮助我们看到什么时候应该从问题域中提取实现也就是说,有时候有一个实体X使用系统& 一个实体Y 使用系统T.我们可能认为X总是与S相伴,而Y总是与T相伴,因此就将它们联系(耦合)起来.Bridge模式 提醒我们,可以抽象出S和T,这样更好,也就是说,Bridge模式最有用的地方,是在解耦抽象与实现之前考虑 Bridge模式是否适用第10章Abstract Factory (抽魚工厂)模式选暮1. 静态工厂的核心角色是()OA抽象产品B具体产品C. 静态工厂D.消费者2. 以下属于创建型模式的是().B装饰模式(Decorator)D桥接模式(Bridge)D桥接模式A抽象工厂模式(Abstract Factory)C外观模式(Facade)3. 下面的类图表示的是哪个设计模式?()。A抽象工厂模式B观察者模式C策略模式ProductBIProductB2 |14. Abstract Factory (抽象工厂)模式的意图是()。A.希望简化现有系统的使用方法你需要定义自己的借口。B.将一个无法控制的现有对象与一个特 定借口相匹配。C.将一组实现部分从另一组使用它们的对象中分离岀来。D-提供一个创建一系列相关或相互依赖对 象的接口,而无需指定它们具体的类5. 在根据不同的机器选择设备驱动程序的案例中,以下叙述不准确的是()。A. 可以使用switch语句选择驱动程序.B. 可以使用继承来实现选择驱动程序,但它可能会产生类组合爆炸问题C. 可以选择抽象工厂模式实现且能避免组合爆炸问题.D. 使用继承的解决方案要比switch语句有更多的优势.6. 以下有关Abstract Factory (抽象工厂)模式正确的是()。A Abstract Factory的实例化方法就是具体工厂方法.B. Abstract Factory类和具体工厂方法可以分离,每个具体工厂负责一个抽象工厂方法接口的实现.C. 由于Abstract Factory类和具体工厂方法可以分离,因此在实现时会产生更多的类.D. 当问题存在相同的对象用于解决不同的情形时,应该使用抽象工厂模式.7. 根据设计模式,有关抽象工厂模式的定义,准确的说法是()A工厂方法是一个抽彖类的派生类实现的。B要创造的东西本身是抽象定义的,工厂方法可以灵活实现.C.抽象匸厂只关注概念,而具体匸厂 创建抽象工厂。D抽象工厂派生岀具体工厂对象和实现方法8. 关于抽象工厂模式,以下叙述不正确的是()A客户对象不需要知道向谁请求所需的对象和如何使用这些对象B抽象工厂类通过为每个不同类型的对象定义一个方法,来指定实例化哪个对象。C具体工厂对彖负责指定哪些对象要实例化。D将抽象工厂模式和适配器模式结合任一起,可以将概念相似的对象当作同种对象处理。9. 关于抽象工厂模式(Abstract Factory ),以下叙述正确的是()。A抽象工厂相对具体工厂而言,可以理解为抽象工厂是抽象类,而具体工厂是对抽象工厂的继承,是抽象工厂 的子类。B抽象工厂类不能实例化,具体工厂可以实例化。C抽象工厂定义接口,具体工厂实现某一接口D抽象工厂模式将使川哪些对级的规则与如何使用这些对線的逻辑仃效地结合起來。10. 下面属于创建型模式的有()。A. 抽象工厂(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- 简答题1. Abstract Factory的三个关键策略是什么?发现并封装变化点;优先使用对篆组合,而不是类继承;针对接口设计,而不是针对实现设计2. 采用Abstract Factory模式的效果是什么?效果:这个模式将“使用哪些对象”的规则与如何使用这些对象“的逻辑相隔离3. 为什么这个模式被称为“Abstract FactoryM ?因为它要创建的东西本身是由抽象定义的工厂各 种变化的实现如何选择,模式并没有具体规定。4如何获得止确的工厂对象?决定需要哪个工厂对象实际上是判断需更哪个系列的对象。如何知道自己需要哪个系 列呢?在类似的案例中,最可能的是由一个配置文件来告诉我们.然后就可以写几行代码根据这些配置信息来将合适的工厂对象实例化.5. 在Abstract Factory (抽象IJ )模式中对象的角色是什么?客户对象只知道“向谁请求需要的对象”和“如何使用这些对象”Abstract Factory类通过“为毎种不同类 型的对象定义一个方法来指定”哪些对象可以被实例化典型情况下,一个Abstract Factor对象将针对每种必须 实例化的对彖拥有一个方法。具体工厂指定哪些对象将被实例化.六.应用题1. 请结合抽象匸厂模式,说明任实际应用中如何生成止确的对象.决定需要哪个工厂对象实际上与确定使用哪一组对象是相同的例如,在驱动程序问题中.有一组低分辨率动程序和一组高分辨率驱动程序,怎样才能知道自己需要哪一组呢?在类似这样的例子中,很可能通过一个配置文 件获知这一信息然后可以编写几行代码,根据配信息将合适的工厂对象实例化.还可以使用Abstract Factory 模式,不同应用程序都使用同一子系统.在这种情况下,工厂对象将传给子系统,告诉子系统将要使用哪些对象, 此时,通常主系统知道子系统需要那一组对象,在调用子系统之前,将实例化正确的工厂对象.2. 在抽象工厂模式中?有哪两种工厂?它们的作用什么?使用抽象工厂模式有什么优点?第12章用模式解决CAD/CAM问题一.选择1. 应用设计模式的一个优点是()。A.适应需求变化B.程序易于理解C. 减少开发过程中的代码开发工作量D.简化软件系统的设计2. 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。A.创建型 B.结构型 C行为型 D.以上都可以3. 实现部分各不相同,但都可以通过一个通用接口被访问是()模式中的包容变化。A. BridgeB. Abstract Factory C. Adapter D. Facade4以下哪-条是Alexander的场累原贝山()。A在对象实例化之前.要考虑它的实例化。B当你有一个涉及创建对象的设计模式肘,对象应为模式提供场景C模式的选取与场景无关.D任一个系统中,由于模式Z间的作用是相互的,不存任兹禹级别的模式。5. 最高级别的模式约束其他的模式的不正确的叙述是()。A站高级别的模式决定其它模式的作用。B最离级别的模式是最重要的.其他的模式是次要的C绘奇级别的模式为其它模式提供场景。D般商级别的模式也可称为场景确怎模式。二填空1. 役讣模式的思想根源足(开闭)基本原则的去观运用,本质上是没有任何模式的,发现模式的人水远是人师而死守 模式的人最多只能是一个工匠。2. 模式不仅仅是包容变化,它们还是变化Z间的(关联)。3. 系统中为其他模式确定场杲的一个或两个模式,这个模式将对其他模式能做的出进行(约束)。4. 通常情况卜,当一个模式使用另一个模式时,看起来被使用模式是在使用模式的(场景)之中的。5. 系统中的一个模式经常通过为系统中的其他模式提供(场景)与其他模式相关联。三.判断1. 识别可能性不等于必须跟着可能性走。对2. 认为一个实际不会岀现的模式出现会起反作用。错3. 对象适配器模式是依赖倒转原则的典型应用。错4. 通过在问题领域中使用模式,可以用一种不同的方式来看待问题.对当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。对四名词解释1.场景一些事物存在或发生的相互关联的状态.2. CVA共同点/变化点分析3. 场景原则当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景.4公开接口5. 多态五简答题1. 考虑场景时使用的一条原则是什么?考虑在系统中需要什么,然后再关心如何实现它.这也符合Alexander的场景原则:当有一个涉及创建对象的 设计模式时,这些对象为这个模式提供场景2用模式的方法思考的步骤是什么?发现在问题领域中拥有的模式.这些是需要分析的模式;对于这些需要分析的 模式,做下列工作:&挑出为其他模式提供最多场景的模式 b在我的槪念性最高的设计中使用这个模式 c识别任何可能已经出现的附加模式. 将它们添加到“需要分析的模式中” d对于需要分析而还未分析的模式,重复上述过程;按照需要将细节添加到 设计中扩展方法和类定义.3场景和被使用模式Z间有什么关联?通常情况下,当一个模式使用另一个模式时.看起来被使用模式是在使用模 式的场景之中的.这条规则也可能有例外,但是看起在大多数时候它都是有效的.4什么是“最高模式” ?指系统中为其他模式建立背景的一两个模式这个模式将约束其他模式的行为.5. 为一个庞大的工程的CAD/CAM系统提供支持的基本盂求是什么?创建一个计算机程序,它能读取一个CAD/CAMft据集并从中提取部件,一个现有的专家系统需要这些部件才能 进行智能设计这个系统应该向CAD/CAM系统屏蔽专家系统.复杂的是CAD/CAM系统正处于变化之中可能有 CAD/CAM系统的多个潜在版本存在,而专家系统需要拥有它们的接口.六.应用题1. 在CAD/CAM问题中,Abstract Factory模式被排除在“最高”模式之外,请举例说明为什么?使用Abstract Factory模式的根本理由在于:如果有一个VI系统或者/2系统,需要确保所有的实现对象都是 VI类型或者V2类型的.fflft Model对象本身已经知道这一点如果其他对象可以很容易地封装创建规则,就没有 必要再实现一个模式之所以将Abstract Factory模式保留在模式集合中.是因为笫一次解决这个问题时,存在 Abstract Factory模式这也说明了,认为存在一个其实并不存在的模式,未必会有什么副作用 第13章设计模式的原则和策略 一选择1. Open-Close原则的含义是一个软件实体(几几应当对扩展开放,对修改关闭.B应当对修改开放,对扩展关闭C应当对继承开放,对修改关闭 D以上都不对2. 典型情况下,()模式不包容变化。A- Bridge B. Abstract Factory C. Adapter D. Facade3. 下列属于设计模式基本原则的是()A继承B.封装C.开放嗨闭D都不是4常用的设计模式可分为()A创建型.结构型和行为型 B対象型.结构型和行为型C过程型、创建型和结构型 D抽象型.接口型和实现型5. 以下哪一条不属于设计模式的基本原则()。A开放封闭原则。B根据场景进行设计的原则。C优先使用继承的原则 D包容变化的原则。二填空1. 设讣模式基本原则但括:开闭原则,(根据场景进行设计的原则),包容变化原则。2. 最基本的5仁图是(类图)。它不仅描述了类,而且说明了类之间的关系。3. 模块,方法和类应该对扩展是开放的,而对更改是(封闭)的。4 Alexander告诉我们要从(场景)进行设讣,在设计我们的片段出现的细节Z前先创建整体视图。5. Bridge模式不仅仅对抽级部分和实现部分的变化进行定义和包容,而且还定义了两个变化Z间的(关联)。三.判 断1. 抽彖不应该依赖细目,细廿应当依赖丁抽象。错2. 大多数设计榄式还让软件更具有可修改性。对3. Open-Close原则的含义是一个软件实体应当对扩展开放,对修改关闭。对4常用的设讣模式可分为过程型、创建型和结构型。错5. Adapter模式和Facade模式总足在别的什么东西创造的场最中彼定义。错 卩q.名词解释1. 开放封闭原则模块,方法和类应该对扩展是开放的,而对更改是封闭的.2. 超类个类,其他的类派生自它,包含主要属性的定义,以及所有派生类都将使用(并且可能重裁)的方法的定义3. 属性与一个对象相关联的数据4. 成员类的数据和方法5. 方法与对象相关联的函数五.简答题1. 什么是开-闭原则?模块,方法和类应该对扩展是开放的,而对更改是封闭的.换句话说,我们必须将我们的软件设计成这样:我们可以在不修改代码的前提下对我们的软件进行扩展.2. 哪些因索决定了用哪种方案來实现.Abstract Factory模式?未来变化的可能性;“不修改当前系统”的重要性;谁来控制将被创建的对象系列(是我们还是其他的开发组);使用的编程语言;数据库或配叠文件的可用性.3.按照模式进行设计的策略是什么?1 开放漕闭的原则2从场景进行设计3在类中包容变化.4. 请举例说明如何根据模式为其他的模式创造场景來选择模式。比如,Bridge-Facade使用Facade模式来简化VI系统的接口,Bridge模式的实现部分之一使用Facade模式所创建的新接口.因此,Bridge模式为Facade模式创造了场景5. 为什么说Bridge是包容变化原则的一个精彩的范例?Bridge模式中的实现部分各不相同,但都可以通过一个通用接口被访问.系统可以接纳新的实现部分,只要 它也使用这个通用接口来实现.六应用题1. 在本书的应用案例中,为什么认为Bridge模式高于Adapter模式?请举例说明。Bridge模式的应川悄杲是任概念的抽象有变化及其实现方式有多个。而Adapter模式的应用情景足原右対象的 接口和需要的接【I冇差别。而大多数情景下Bridge模式是作为Adapter模式的背景.也就是Bridge足Adapter的 “般高模式”,任用Bridge模式封装实现时,人多数的实现并不可以派生口相同的基类,这时Adapter模式就可以 派上用场了。2. 设讣模式应遵循的原则令哪些?请举例分别对它们进行解释?1 开放漕闭的原则2.从场景进行设计3在类中包容变化.第14章Strategy (策略)模式选择1. 下面的类图表示的是哪个设计模式?()A装饰模式(Decorator)B策略模式(Strategy)C桥接模式(Bridge)D观察者模式(Observer)ContcitStraff11(woncrecSlratqt)AConcrctcS B(oncrctrStntcgStrMtqlgcmthinlntCTfM:e( 1;-Aigonthmlnteriacrt) /lg : Stnitcyy O Kantextlntcrtacct)-Algdnthfnlntercc)2. 定义一系列的算法.把它们一个个封装起来,并且使它们可相互桥换。这句话是对哪种模式的描述()oA观察者模式(Observer) B桥接模式(Bridge)C适配器模式(Adapter) D策略模式(Strategy)3. 下面属于行为模式的是()A抽象工厂模式(Abstract Factory ) B适配器模式(Adapter)C.策略模式(Strategy)D外观模式(Facade)4策略模式针对-组算法,将每一个算法封装到具有()接口的独立的类中,从而使得它们可以相互替换。A.不同 B.样 C共同 D都不是5. Strategy (策略)模式的意图是:()。几定义一系列的算法,把它们一个个的封装起来,并且使它们可相互替换.B.为一个对象动态连接附加的职责。C. 你希望只拥有一个对象,但不用全局对象來控制对象的实例化。D. 在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知 并自动更新。6. 作者在书中称分析瘫痪”为()。A因为问題的复杂性导致分析失败。B因为问题的复杂性导致分析无法继续进行。C过度分析或过度设计D错谋分析引起的后果。7. 作者任设计模式中考虑变化的设计方式应遵循的原则中,哪一条是错误的()。A针对接口进行编程,而不是针对实现编程。B优先使用对象组合,而不是继承。C对需求中可能变化的部分,应重新设计.D在不引起巫新设讣的前提下,对变化的概念进行封装。8. 以下叙述不正确的是()。A switch语句可能导致“分支蔓延”。R C+中的函数抬针和C廿中的委托都可以用來将代码隐液存精巧、紧凑、内聚的函数中.C使用继承可以实现复用。D作者认为复用是程序开发中最重要的考虑因素.9. 对继承戻次太深可能导致的问题的叙述不正确的是。A继承层次太深导致紧内聚.B继承戻次太深导致谢内聚。C继承层次太深导致紧耦合。D继承层次太深会产生冗余,并使测试困难。10. Strategy模式应遵循的原则中不正确的是()A对象都具有职贵。B职责不同的具体实现足通过多态的使用完成的。C概念上相同的算法具有多个不同的实现,需耍进行管理。D优先使用组合而不是继承.二填空1. (Strategy模式)模式是一种定义一系列算法的方法。2. UML是一种用来创建(软件模型)的图像语言。3. 最基本的UML图是类图。它不仅(描述)了类,而且说明了类之间的关系。Strategy R式还简化了单-元测试,因为侮个算法都有自己的类,可以通过自己的(接口)单独测试。4. Strategy意图是定义一系列的算法,把它们一个个(封装)起来,并且使它们可和互替换。5. Strategy模式要求所(封装)的算法应处在使用它们的类之外.6. 通过从一个抽象类(派生)执行算法的所有不同方式,主模块无需再操心实际使用的是哪一个算法。7. Strategy模式的使用中,将某个(变化的行为)从使用它的类中移出來,这种过程与数据库中的规范化过程 非常相似。8. 将(算法)封装在一个抽象类中。而且在某一时刻能够互换地使用其中Z的方法,这就是Strategy模式的本 质.10Strategy模式是一种定义(一系列)算法的方法。三. 判断1. Strategy模式使得算法可独立于使用它的客户而变化。对2. 从Strategy模式的概念上來说,所有算法都做柑同的工作,11拥有相同的实现。错3. Strategy (策略)模式是一种定义算法家族的方法。对4. Strategy (策略)模式让我们可以将这些规则封装在一个抽象类中,然后拥有一系列的抽象派生类。错5. Strategy (策略)模式的本质是在一个抽象类中封装一个算法并交替使用这些算法。对6. 在设计模式设计中,作者提倡对变化进行封装在个类中,再通过对它进行继承的原则。错7. 当使用不同的规则处理算法,就可以采用Strategy模式错8. Strategy模式可以用不同的方式调用所有的算法错9. Strategy模式简化了单元测试,因为毎个算法都有自己的类,可以通过接口进行单独测试。对10. 在算法设计时,采用Strategy模式会增加大量的类.对四.名词解 释1. Strategy (策略)模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换这个模式使算法可独立于使用它的客户而变化2. 解耦解耦在软件里就是要让两个对象之间保持松耦合的关系,这种关系应具有稳定标准等特性,其作用是限制了 对象修改所影响的范围.3. 聚集聚集表示类之间的关系是整体与部分的关系。4. 构造函数五.简答题1. Strategy模式的意图是什么吗?它有哪些效果?意图是让你可以使用不同的业务规则或算法取决于它们出场的场景.效果有:Strategy (策略模式定 义了一系列的算法switch语句或条件语句得到了避免;你必须以相同的方式调用所有的算法(它们必须拥有相 同的接口)CcncreteStrategies与Context之间的交互可能需要在Context中加入getState之类的方法2. Strategy (策略)模式足建立任哪些原则的基础上?主要建立在:对象拥有责任;这些责任的不同的特定实现通过使用多态来表现;需要将几个不同的实现按照概念上相同的算法来骨理;一个好的设计经验:将问题领域中发生的行为彼此分离也就是说,使它们解耦.这让改变对某一行为负责的类,而不会对其他行为产生不好的影响3. Strategy (策略)模式对问题的解决方案是什么?以及如何实现?解决方案是:将算法的选择和算法的实现相分离让客户可以基于场景做出选择实现:让使用算法的类包含一个抽象类,抽象类中有一个抽象方法抬定如何调用算法.每个派生类根据需要实现算法4 按照四人团的说法,Strategy策略模式的基本思想是什么?定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,使算法可独立于使用它的客户而变化. 六应用题1. 举例说出策略模式(Strategy)的应用场景,并且画出该模式的类图。Strategy模式是一种定义一系列算法的方法.概念上来看,所有这些算法完成的都是相同的工作,只是实现 不同比如,在一个国际电子商务系统中,不同的国家需要使用不同的税额计算算法通过Strategy模式,可以 将这些规则封装在一个抽象类中,然后派生出一系列的具体类在一个国际电子零書系统中,需要考虑为不同的国家的消费者的定单汁算税费问题,请用模式的方法考虑如何解决该问题。通过Strategy模式,可以将这些規则封装在一个抽象类中,然后派生出一系列的具体类.通过从一个抽象派 生类执行算法的所有不同方式,主模块就无需再操心实际使用的是哪一个,这样能够允许发生新的变化 第15章Decorator俄饰)模式一选择1. 若系统中的某子模块需耍为其他模块()提供访问不同数据库系统的功能,这些数据库系统捉供的访问接口 有一定的差异,但访问过程却都是郴同的,例如,先连接数据库,任打开数据库最后对数据库进行査询.设计模 式可抽象出相同的数据库访问过程。A.外观B装饰C单间D模板方法2. Decorator模式的描述正确的是()。A.该模式的意图是动态地给一个对象添加一些额外的职责.就増加功能来说,该模式相比生成子类不够灵活。B适用于在不影响其他对象的情况下,以动态.透明的方式给单个对象添加职责.C该模式的想图是将对象 组合成树形结构以表示“部分-整体”的层次结构。该模式使得用户对单个对象和组合对象的使用具有一致性。D该模式适川性足你想表示对象的部分整体层次结构。3. 下面属于结构模式的有().A.策略模式(Strategies)B.单例模式(Singleton) C.抽象 口 模式(Abstract Factory)D装饰模式(Decorator)4. 下面的类图表示的是哪个设讣模式?()。A装饰模式(Decorator)B适配器模式(Adapter)C策略模式(Strategies)D桥接模式(Bridge)5. Decorator (装饰)模式的息图是:()。人定义一系列的算法,把它们一个个的封装起來,并且使它们可相互替换。B为一个对象动态连接附加的职贵C你希望只拥有一个对象,但不用全局对象来控制对象的实例化。D.在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知 并自动更新。二填空1. Decorator模式将一个功能链的(动态构建)与使用功能的客户分离开来。2. Decorator模式对象在被装饰功能Z前或者Z后或者前两者同时执行自己的(附加功能)。3. 每个Decorator对象都对其后的对象(封装)自己的新功能。4. 就增加功能来说,Decorator模式相比生成子类更为(灵活)。5. Decorator模式是为现有的功能(动态)添加附加功能的一种方法。三.判断Decorator (装饰)模式的意图是为一个对象连接附加的职责。错1. 毎个Decorator对象任被装饰的功能Z前或Z后执行自C的附加功能。对2. Decorator (装饰)模式适用性是表示对象的部分-整体层次结构.错3. Decorator (装饰)模式的意图是动态地给一个对象添加一些额外的职责。就增加功能来说,该模式相比生成子 类不够灵活。错4. Decorator (装饰)模式是为现何的功能动态添加附加功能的一种方法.对四. 名词解释1. Decorator (装饰)模式动态地给一个对象添加一些额外的职责.2. Decorator (装饰)链始于一个Conponet对象,毎个装饰者对象后面紧跟着另一个装饰者对象,而对象链终于CwicreteConpOTiet 对象.3. 类图是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等.4. 交互图以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻划客观世界和设计、 构建相应的软件系统.五简答题1. 毎个Decorator对象封装的是彳I么?每个Decorator对象都对其后的对象封装自己的新功能.每个Decorator对象在被装饰的功能之前或之后执行 自己的附加功能.2. Decorator (装饰)模式的效果是什么?被添加的功能属于小的对象.好处是可以在ConcreteConDOTTent对象的功能之前或之后动态添加功能虽然一 个装饰者可以在被装饰者之前或之后添加功能,但对象链总是以ConcreteComponent对象结束.3.
展开阅读全文