




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计模式试题—・选择设计模式具有的优点()OB.程序易于理解D.简化软件系统的设计BB.程序易于理解D.简化软件系统的设计B不同问题的同一表相D.以上都不是B.对象组合与类的继承D.系统复用与系统扩展B)针对接口编程D)设计应支持变化c・减少开发过程中的代码开发工作量设计模式一般用來解决什么样的问题()o同一问题的不同表相C.不同问题的不同表相设计模式的两大主题是()oA系统的维护与开发c・系统架构与系统开发以下哪些问题通过应用设计模式不能够解决。()A)指定对象的接口C)确定软件的功能都正确实现二填空施式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、(效果)、实现、GM参考。设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。设计模式是一个(抽象)的方案,它可以解决一类问题。1.在设计模式群体中,效果是指(原因和结果)。三.判断适配器模式属于创建型模式。错在设计模式中,“效果”只是指“原因和结果”。对设计模式使代码编制不能真正工程化。错设计模式的两大主题是系统复用与系统扩展。对四.名词解释设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.模板模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中•模式就是解决某一类问题的方法论.把解决某类问题的方法总结归纳到理论高度,那就是模式.内聚度模块内部各成分彼此结合的紧密程度.五•简答题什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用.多数人知晓的、经过分类编目的.代码设计经验的总客使用设计模式是为了可重用代码.让代码更容易被他人理解、保证代码可旅性・设计模式的基本要素有哪些?名称,意图,问题,解决方案,参与者和协作者,效果,实现,G(F参考.设计模式中一般都遵循的原则有什么?开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。四人团针对“创建优秀面向对象设计”建议了哪些策略?针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。第6章facade(外观)模式—・选择外观模式的作用是OoA.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用.
C.保证一个类仅有一个实例,并提供一个访问他的全局访问点。D.在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。Facade(外观)模式的意图是()。希望简化现有系统的使用方法,你需要定义自己的接口。将一个无法控制的现有对象与一个特定借口相匹配。将一组实现部分从另一组使用它们的对彖中分离出來。D.你需要为特定的客户(或情况)提供特定系列的对彖。()模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。Adapter(适配器)模式Adapter(适配器)模式C.Strategy(策略)模式下面属于结构模式的有()。A观察者模式(Observer)C.策略模式(Strategy)二填空Bridge(桥接)模式D.Facade(外观)模式单例模式(Singleton)D•外观模式(Fafade)Facade模式可以用來(隐藏)系统。该模式能够将系统作为自己的私有成员包含进來。Facade模式要解决的问题:只需要使用一个复杂系统的一个(子集)。或者,需要用一种特殊的方式与系统交互。Facade模式不仅可以为方法调用创建更(简单)的接口,还可以减少客户必须处理的对象数量。Facade外观模式的解决方案是向客户展现使用现有系统的一个新的(接口)。三.判断Fagde(外观)模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。对外观模式,当不能釆用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。错Facade模式为子系统中的一组接口提供的界面可能不一致。错Facade外观模式只能为方法调用创建更简单的接口,不能减少客户必须处理的对象数量。错四.名词解释Facade模式模式定义了一个高层接口,使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面・接口包含了一系列不被实现的方法,而把这些方法的实现交给继承它的类・组合一个类是另一个类的组成成分.4•耦合度对模块间关联程度的度虽•五•简答题Facade(外观)模式解决问题的方案是什么?如何实现?Facade向客户展现使用现有系统的一个新的接口•如何实现:定义一个(或一组)新的类来封装所需的接口.让新的类使用现有的系统。2•请简要说明在一个复杂系统中应用Facade(外观)模式的优点。当拥有一个复杂的系统时,Fapade(外观)模式使我们只需要使用它的一部分功能.最终我们将得到一个更简单,更容易使用的或根据我们的需要定制的系统.Facade式的意图是什么?望那个简化现有系统的使用方法,需要定义自己的接口•在Facade模式中,客户是如何使用子系统的?六.应用题1•请论述在一个系统中应用Fagde(外观)模式的必要性,并给出一种解决方案。Fagde(外观〉模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量•举个例子。假设有一个Client对象,这个对象必须处理Database、Model、Element类的对象.Client必须首先通过Database对象打开数据库,以得到一个对Model对象的引用,然后再向Model对象请求一个Element对象,最后向Element对象査询所需的信息•而如果能创建一个DatabaseFacade类,让Cli«it对象向它发出请求,那么上面的过程可能就会变得简单一些。2•请举例说明Facade模式和Adapter模式使用场景的差异,并说明它们的解决方案及表现的特点。第7章Ad^terGS配器)模式一・选择Adapter(适配器)模式的意图是()。2希望简化现有系统的使用方法。你需要定义自己的借口。B.将一个无法控制的现有对象与一个特定借口相匹配•将一组实现部分从另一组使用它们的对彖中分离出來。D.你需要为特定的客户(或情况)提供特定系列的对象。下面不属于创建型模式的有()。抽象工厂模式(AbstractFactory)B・工厂方法模式(FactoryMethod)C-适配器模式(Adapter)D.单例模式(Singleton)将一个类的接口转换成客户希望的另一个接口。这句话是对下列哪种模式的描述Oo策略模式(Strategies)B.桥接模式(Bridge)适配器模式(Adapter)D・单例模式(Singleton)以下关于结构型模式说法不正确的是。0A)结构型模式可以在不破坏类封装性的基础上,实现新的功能。B)结构型模式主要用于创建一组对象。C)结构型模式可以创建一组类的统一访问接口。D)结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。二.填空适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是继承关系,而对彖适配器采用的是(组合聚合)关系。(类Adapter卞Adapter模式有两种类型有:对象(类Adapter卞UML是一种用來创建(程序模型)的图像语言。(Ad^ter适配器)模式使原本接口不兼容而不能一起工作的类可以一起工作。适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对彖适配器采用的是组合聚类关系。三.判断对彖适配器模式是合成聚合复用原则的典型应用。对Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。对Facade模式和Adapter模式是相同类型的包装器。错Adapter模式不是必须针对某个接口进行设计。错四•名词解释Adapter模式将一个类的接口转换成客户希望的另外一个接口•Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。对彖Adapter模式使用Adapter模式与适当的抽象类相匹配,它通常依赖于一个对象(适配对象〉包含另一个对象(被适配对象).类Adapter模式当实现Adapter模式的方法是使用多重继承。在这种情况下,它被成为类Adapter模式。多态相关的对象按照各自类型来实现方法的能力。五.简答题给出Adapter模式的定义及意图。意图是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作・Adapter模式的最常见的用法是什么?该模式可以使你不用操心什么方面?Adapter模式最通常的用壌就是保持多态。Ad^ter模式让我们在进行设计时不必再担心现存类的接口问题。Adapter模式问题的解决方案以及如何实现?解决方案是Adapter模式用我们需要的接口对无法修改的类进行包装。实现:将现存的类包含在另一个类之中.包容类与需要的接口相匹配,并调用被包容类的方法.4.请简要说明在软件设计中设计模式的作用?软件设计模式(DesignPattern)是一套被反复使用.多数人知晓的、经过分类编目的代码设计经验的总结.使用设计模式是为了适应需求变化.可重用代码.让代码更容易被他人理解.保证代码的可靠性。六•应用题1•根据你的理解,请分析Facade模式比Adapter模式的相同点和不同点,并说明它们在实际应用中的差异?在两个模式中,都拥有现存的类,但是在Fagde模式中,无须针对某个接口进行设计;而在Adapter模式中则必须针对某个特定接口进行设计•在F务ade模式中,动机是简化接口,而在Adapter模式中,尽管也是越简单越好,目的是针对一个现有的接口进行设计,并不能简化任何东西,即使可能有另一个更简单的接口。总之,在实际应用中,Fapade模式简化接口,而Adapter模式将接口转换成另一个现有的接2•请说明什么是Adapter模式,Adapter模式有哪几种形式?请举例说明?第8章扩展我们的视野第9章Bridge(桥接)模式一•选择关于继承表述错误的是:()。人继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。B•超类可以显式地捕获那些公共的属性和方法。子类则通过附加属性和方法來进行实现的扩展。C•在一定意义上说破坏了封装性,因为这会将父类的实现细节暴露给子类。D•继承本质上是“白盒复用”,对父类的修改,不会影响到子类・在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在()。A外观模式(Facade)B装饰模式(Decorator)C策略模式(Strategies)D桥接模式(Bridge)行为类模式使用()在类间分派行为。A接口B继承机制C对象组合D委托下面的类图表示的是哪个设计模式?()。A抽象工厂模式(AbstractFactory)B观察者模式(Observer)C策略模式(Strategies)D桥接模式(Bridge)Bridge(桥接)模式的意图是()。A希望简化现有系统的使用方法。你需要定义自己的借口。B.将一个无法控制的现有对象与一个特定借口相匹配。C.将一组实现部分从另一组使用它们的对象中分离出来.D.你需要为特定的客户(或情况)提供特定系列的对象。按照四人团的说法,Bridge模式的意图是()。将抽象部分与它的实现部分相分离,使它们可以独立地变化.B・将抽象部分与它的实现部分相分离,但它们不能独立地变化.C・将抽象部分与它的实现部分相结合,但它们可以独立地变化.将抽象部分与它的实现部分相结合,使它们相互依赖.以下叙述不对的是()oABridge模式是将抽象部分与它的实现部分分离,使它们可以独立地变化.Bridge模式是发现并封装不同点的极好例子.Bridge模式优先使用继承而不是组合.Bridge模式优先使用组合而不是继承.以下叙述不对的是()o学习设计模式告诉我们要尽可能使用继承.学习设计模式通常可以找到比仅采用面向对彖方法更好的解决方案.学习设计模式告诉我们要尽可能使用组合.Bridge模式适用于一个抽象部分拥有不同的实现部分的情形对Alexander的模式哲学,以下叙述正确的是()。A学习设计模式,可以完全解决软件开发中的变化情况.每个模式,可以无数次使用模式提供的解决方案,而不必再次重复同样的工作方式.设计模式总是可以为需求的变化提供更好的解决方案.设计模式描述一个在开发的软件环境中不断产生新的问题时,能提供很好的解决方案.根据Coplien关于共同点/变化点的说法,下面哪个是正确的()。丸共同点分析就是寻找一个不会随时间变化的结构,而变化点分析就是捕捉变化的内容.共同点分析是寻找家族成员的相同元素.在一个系统中,共同点和不同点的关系是相对的,可以互相转化.共同点通常由父类实现而变化点通常由子类实现.二填空在存在继承关系的情况下,方法向超类方向集中,而数据向(子类)方向集中。当存在一个抽象有不同实现时Bridge模式最为有用,它可以使抽彖和(实现)相互独立地进行变化。(类型的封装)是通过多态使用具有派生类的抽象类实现的。在进行设计以应对变化的过程中,应该遵循两条基本策略:找出变化并(封装变化点);优先使用对彖组合,而不是类继承。C++中,必须用一个定义(公共接口)的抽象类来实现Bridge模式的实现部分。为了提高内聚和(松耦合),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。封装性好的代码更容易测试,因为它与其他代码没有(耦合)oBridge(桥接)模式是将抽象部分与它的实现部分分离,其中(实现部分)是指用來实现抽象类的派生类的对象。在进行设计以应对变化的过程中,应该遵循两条基本策略:找出变化并封装变化点;优先使用对彖(组合),而不是类继承。三.判断为了提高内聚和紧耦合,我们经常会抽彖出一些类的公共接口以形成抽象基类或者接口。错继承本质上是“白盒复用”,对父类的修改,不会影响到子类。错继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。对即使在不知道如何实现Bridge(桥接)模式时,你也可以判断出在这种情况下这个模式是适用的。对在创建设计以处理变化的过程中,应该优先使用类继承,而不是使用对象组合。错只有在共同点分析定义的上下文中,变化点才有意义。对变化点就是领域问题的特殊情形,而共同点则是指一般情形。错Bridge模式就是为系统提供一种高内聚,松耦合的解决方案。对当需要增加系统的功能时,应当采用Bridge模式。错10・封装就是指数据隐藏。错
四•名词解释抽彖是指不同事物之间概念上的联系方式。重构修改代码改进结构但不增加新功能,就是所谓重构.内聚性指的是例程中操作之间联系的紧密程度.耦合性指的是两个例程之间联系的紧密程度。Bridge(桥梁)模式将抽象化与实现化脱耦,使得二者可以独立的变化就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。五.简答题Bridge模式要解决的基本问题是什么?Bridge(桥接)模式适用于一个抽象部分拥有不同的实现部分的情况,它让抽象部分和实现部分可以各自独立的变化•给出Bridge模式的定义。采用Bridge模式的效果是什么?将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化.效果是:“实现部分与使用它的对象的分离”增加了灵活性。客户对象不需要了解实现问题.什么是“一条规则,一个地方”?抽象类经常让自己的方法实际使用实现部分对象。抽象部分的派生类将调用这些方法・这样如果需要修改,修改也会容易些,并且在实现整个模式之前让你拥有一个好的起点•在学习Bridge(桥接)模式的过程中,应该遵循下列处理变化的基本策略是什么?找出变化并封装变化点;优先使用对象组合,而不是类继承•Bridge(桥接)模式的解决方案是什么,以及如何实现?解决的问题是:为所有的实现部分定义一个接口,让抽象类的所有派生类使用这个接口。实现^将实现部分封装在一个抽象类中.在被实现的抽象部分基类中包含一个实现部分基类的句柄。六•应用题根据你对Bridge模式的理解,槪要描述使用该模式的应用耍求,并给出相应的设计类图。当存在一个抽象有不同实现时Bridge模式最为有用,它可以使抽象和实现相互独立地进行变化•举例说明使用Bridge模式的场合,给出在该场合下使用Bridge模式的解决方案,并说明该解决方案的优点。打印驱动程序是Bridge模式最典型的例子,也是最适合应用Bridge模式的场合.Bridge模式的真正威力在于它能够帮助我们看到什么时候应该从问题域中提取实现•也就是说,有时侯有一个实体X使用系统&一个实体Y使用系统八我们可能认为X总是与S相伴,而Y总是与T相伴,因此就将它们联系(耦合〉起来.Bridge模式提醒我们,可以抽象出S和T,这样更好,也就是说,Bridge模式最有用的地方,是在解耦抽象与实现之前考虑Bridge模式是否适用•第10章AbstractFactory(抽象工厂)模式—・选择静态工厂的核心角色是OO几抽象产品B•具体产品C.静态工厂D.消费者以下属于创建型模式的是()。B装饰模式(Decorator)D桥接模式(Bridge)B装饰模式(Decorator)D桥接模式(Bridge)D桥接模式C外观模式(Facade)下面的类图表示的是哪个设计模式?()oA抽象工厂模式B观察者模式C策略模式ClientAbstractFactory>*CreateProductA()*CreateProductB()ConcreteFactorylConcreteFactory2个*CreateProductA()+CreateProduciB()♦CreateProductA()+CreateProductB()AbstractProductB4KAbstractFactory(抽象工厂)模式的意图是()。ConcreteFactorylConcreteFactory2个*CreateProductA()+CreateProduciB()♦CreateProductA()+CreateProductB()AbstractProductB4K£希望简化现有系统的使用方法。你需要定义自己的借口。B.将一个无法控制的现有对象与一个特定借口相匹配。将一组实现部分从另一组使用它们的对象中分离出來。D.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类在根据不同的机器选择设备驱动程序的案例中,以下叙述不准确的是0。人可以使用switch语句选择驱动程序.可以使用继承來实现选择驱动程序,但它可能会产生类组合爆炸问题…可以选择抽彖工厂模式实现,且能避免组合爆炸问题.使用继承的解决方案要比switch语句有更多的优势.以下有关AbstractFactory(抽象工厂)模式正确的是()。AAbstractFactory的实例化方法就是具体工厂方法.AbstractFactory类和具体工厂方法可以分离,每个具体工厂负责一个抽象工厂方法接口的实现.由于AbstractFactory类和具体工厂方法可以分离,因此在实现时会产生更多的类.当问题存在相同的对象用于解决不同的情形时,应该使用抽彖工厂模式.7•根据《设计模式》,有关抽象工厂模式的定义,准确的说法是()。A工厂方法是一个抽彖类的派生类实现的。B要创造的东西本身是抽象定义的,工厂方法可以灵活实现・C•抽彖工厂只关注概念,而具体工厂创建抽彖工厂。D抽象工厂派生出具体工厂对象和实现方法。关于抽象工厂模式,以下叙述不正确的是()A客户对象不需要知道向谁请求所需的对象和如何使用这些对象。B抽象工厂类通过为每个不同类型的对象定义一个方法,来指定实例化哪个对彖。C具体工厂对彖负责指定哪些对彖要实例化。D将抽象工厂模式和适配器模式结合在一起,可以将概念相似的对象当作同种对彖处理。关于抽象工厂模式(AbstractFactory),以下叙述正确的是()。A抽象工厂相对具体工厂而言,可以理解为抽彖工厂是抽象类,而具体工厂是对抽彖工厂的继承,是抽象工厂的子类。B抽象工厂类不能实例化,具体工厂可以实例化。C抽象工厂定义接口,具体工厂实现某一接D抽象工厂模式将使用哪些对象的规则与如何使用这些对彖的逻辑有效地结合起來。下面属于创建型模式的有()o抽象工厂(AbstractFactory)模式外观(Facade)模式C・适配器(Adapter)模式D・桥接(Bridge)模式二填空(抽象工厂)模式提供了一系列相关或相互依赖对象的接口而无需指定他们具体的类。工厂模式分为简单工厂,工厂方法,(工厂方法)三种类型。AbstractFactory模式就是用來解决这类问题的:要创建一组相关或者(相互依赖)的对彖。AbstractFactory模式强调的是为创建多个相互依赖的对象提供一个(同一的接口)。我们可以使用(抽象工厂)模式,不同应用程序都使用同一子系统。AbstractFactory意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们(具体的类)。当一个系统要(独立)于它的产品的创建、组合和表示时适合用AbstractFactory模式。AbstractFactory模式为如何创建对象组的每个成员定义(接口)。抽象工厂模式是定义一个(抽象类),然后为每个组实现一个具体类。AbstractFactory模式将如何执行对象(实例化)规则从使用这些对象的客户对象提取出來。三•判断抽彖工厂模式提供了一系列相关或相互依赖对象的接口且必须指定他们具体的类。错AbstractFactory(抽象工厂)模式确保系统总能根据当前的情况获得合适的对象。对AbstractFactory(抽彖工厂)模式中,客户对象不需知道“向谁请求需要的对彖”“如何使用这些对彖”。错典型情况下,一个AbstractFactory对象将针对每种必须实例化的对象拥有一个方法。对决定需要哪个工厂对象,实际上是判断需要那个系列的对象。对从本质上看,switch语句可以达到和抽象工厂相同的效果。错抽象工厂模式简化了设计过程。错一个抽象工厂对象总是要和一个具体工厂方法对象相结合。错抽彖工厂模式告诉我们,要针对接口而不是实现进行设计。对使用抽彖工厂方法与优先使用组合是相矛盾的。错四•名词解释AbstractFactory(抽象工厂)模式就是用来解决这类问题的:要创建一组相关或者相互依赖的对象。组合爆炸随着问题中元素的增加,所出现的可能组合数剧烈增加,形象的说法就是组合爆炸.3封装任材形式的隐藏。对象对它们的数据进行封装。抽象类对它们派生出的具体类进行封装抽象类为一组概念上相似的类定义方法和公共属性.抽象类绝对不能被实例化.具体类是能被直接实例化的类、用例、信号、其他类元或其他泛化元素,它也可以用来描述实现的操作.五.简答题AbstractFactory的三个关键策略是什么?发现并封装变化点;优先使用对象组合,而不是类继承;针对接口设计,而不是针对实现设计•采用AbstractFactory模式的效果是什么?效果:这个模式将“使用哪些对象”的规则与“”如何使用这些对象“的逻辑相隔离•为什么这个模式彼称为“AbstractFactory"?因为它要创建的东西本身是由抽象定义的•工厂各种变化的实现如何选择,模式并没有具体规定。如何获得正确的工厂对象?决定需要哪个工厂对象实际上是判断需要哪个系列的对象。如何知道自己需要哪个系列呢?在类似的案例中,最可能的是由一个配置文件来告诉我们•然后就可以写几行代码,根据这些配置信息来将合适的工厂对象实例化.5.在AbstractFactory(抽彖工厂)模式中对象的角色是什么?客户对象只知道“向谁请求需要的对象”和“如何使用这些对象”•AbstractFactory类通过“为每种不同类型的对象定义一个方法来指定”哪些对象可以被实例化•典型情况下,一个AbstractFactor对象将针对每种必须实例化的对象拥有一个方法。具体工厂指定哪些对象将被实例化•六•应用题1•请结合抽彖工厂模式,说明在实际应用中如何生成正确的对彖。决定需要哪个工厂对象实际上与确定使用哪一组对象是相同的.例如,在驱动程序问题中,有一组低分辨率动程序和一组高分辨率驱动程序,怎样才能知道自己需要哪一组呢?在类似这样的例子中,很可能通过一个配置文件获知这一信息・然后可以编写几行代码,根据配置信息将合适的工厂对象实例化。还可以使用AbstractFactory模式,不同应用程序都使用同一子系统。在这种情况下,工厂对象将传给子系统,告诉子系统将要使用哪些对象,此时,通常主系统知道子系统需要那一组对象,在调用子系统之前,将实例化正确的工厂对象.在抽象工厂模式中?有哪两种工厂?它们的作用什么?使用抽彖工厂模式有什么优点?第12章用模式解决CAD/CAM问题—・选择应用设计模式的一个优点是()oA.适应需求变化B.程序易于理解c・减少开发过程中的代码开发工作量D.简化软件系统的设计当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。A.创建型B.结构型C行为型D.以上都可以实现部分各不相同,但都可以通过一个通用接口被访问是()模式中的包容变化。A.BridgeB.AbstractFactoryC・AdapterD・Facade以下哪一条是Alexander•的场景原贝ij:()。A在对彖实例化之前,要考虑它的实例化。B当你有一个涉及创建对象的设计模式时,对象应为模式提供场景.C模式的选取与场景无关。D在一个系统中,由于模式之间的作用是相互的,不存在最高级别的模式。最高级别的模式约束其他的模式的不正确的叙述是()oA最高级别的模式决定其它模式的作用。B最高级别的模式是最重要的,其他的模式是次要的•C最高级别的模式为其它模式提供场景。D最高级别的模式也可称为场景确定模式。二填空衣计模式的思想根源是(开闭)基本原则的宏观运用,本质上是没有任何模式的,发现模式的人永远是大师,而死守模式的人,最多只能是一个工匠。模式不仅仅是包容变化,它们还是变化之间的(关联)o系统中为其他模式确定场景的一个或两个模式,这个模式将对其他模式能做的事进行(约束)。通常情况下,当一个模式使用另一个模式时,看起來被使用模式是在使用模式的(场景)之中的。系统中的一个模式经常通过为系统中的其他模式提供(场景)与其他模式相关联。三.判断识别可能性不等于必须跟着可能性走。对认为一个实际不会出现的模式出现会起反作用。错对象适配器模式是依赖倒转原则的典型应用。错通过在问题领域中使用模式,可以用一种不同的方式來看待问题。对当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。对四•名词解释1.场景一些事物存在或发生的相互关联的状态。CVA共同点/变化点分析场景原则当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。公开接口多态五•简答题考虑场景时使用的一条原则是什么?考虑在系统中需要什么,然后再关心如何实现它・这也符合Alexander的场景原则:当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景.用模式的方法思考的步骤是什么?发现在问题领域中拥有的模式.这些是需要分析的模式;对于这些需要分析的模式,做下列工作:&挑出为其他模式提供最多场景的模式。b.在我的概念性最高的设计中使用这个模式•c•识别任何可能已经出现的附加模式・将它们添加到“需要分析的模式中”•丘对于需要分析而还未分析的模式,至复上述过程;按照需要将细节添加到设计中•扩展方法和类定义.3•场景和被使用模式之间有什么关联?通常情况下,当一个模式使用另一个模式时,看起来被使用模式是在使用模式的场景之中的.这条规则也可能有例外,但是看起在大多数时候它都是有效的.4.什么是“最高模式”?指系统中为其他模式建立背景的一两个模式.这个模式将约束其他模式的行为。为一个庞大的工程的CAD/CAM系统提供支持的基本需求是什么?创建一个计算机程序,它能读取一个CAD/CAM数据集并从中提取部件,一个现有的专家系统需要这些部件才能进行智能设计•这个系统应该向CAD/CAM系统屏蔽专家系统.复杂的是CAD/CAM系统正处于变化之中•可能有CAD/CAM系统的多个潜在版本存在,而专家系统需要拥有它们的接口.六•应用题在CAD/CAM问题中,AbstractFactory模式被排除在“最高”模式之外,请举例说明为什么?使用AbstractFactory模式的根本理由在于:如果有一个VI系统或者V2系统,需要确保所有的实现对象都是VI类型或者V2类型的,但是Model对象本身已经知道这一点.如果其他对象可以很容易地封装创建规则,就没有必要再实现一个模式•之所以将AbstractFactory模式保留在模式集合中,是因为第一次解决这个问题时,存在AbstractFactory模式。这也说明了,认为存在一个其实并不存在的模式,未必会有什么副作用•第13章设计模式的原则和策略—・选择Open-Close原则的含义是一个软件实体()。A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C•应当对继承开放,对修改关闭D•以上都不对典型情况下,()模式不包容变化。A>BridgeB.AbstractFactoryC.AdapterD.Facade下列属于设计模式基本原则的是()oA继承B.封装C.开放関闭D都不是常用的设计模式可分为O。A创建型.结构型和行为型B对象型.结构型和行为型C过程型.创建型和结构型D抽彖型.接口型和实现型以下哪一条不属于设计模式的基本原则()oA开放-封闭原则。B根据场景进行设计的原则。C优先使用继承的原则•D包容变化的原则。二填空设计模式基本原则包括:开闭原则,(根据场景进行设计的原则),包容变化原则。最基本的UML图是(类图)。它不仅描述了类,而且说明了类之间的关系。模块,方法和类应该对扩展是开放的,而对更改是(封闭)的。Alexander告诉我们要从(场景)进行设计,在设计我们的片段出现的细节之前先创建整体视图。Bridge模式不仅仅对抽象部分和实现部分的变化进行定义和包容,而且还定义了两个变化之间的(关联)。三.判断抽象不应该依赖于细节,细节应当依赖于抽象。错大多数设计模式还让软件更具有可修改性。对Open-Close原则的含义是一个软件实体应当对扩展开放,对修改关闭。对常用的设计模式可分为过程型、创建型和结构型。错Adapter模式和Fagde模式总是在别的什么东西创造的场景中被定义。错四•名词解释开放-封闭原则模块,方法和类应该对扩展是开放的,而对更改是封闭的.超类一个类,其他的类派生自它,包含主要属性的定义,以及所有派生类都将使用(并且可能重裁)的方法的定义.属性与一个对象相关联的数据4•成员类的数据和方法方法与对象相关联的函数五.简答题什么是开-闭原则?模块,方法和类应该对扩展是开放的,而对更改是封闭的.换句话说,我们必须将我们的软件设计成这样我们可以在不修改代码的前提下对我们的软件进行扩展.«那些因素决定了用哪种方案來实现AbstractFactory模式?未裱化的可能性;“不修改当前系统”的重要性;谁来控制将被创建的对象系列(是我们还是其他的开发组);使用的编程语言;数据库或配置文件的可用性•3・按照模式进行设计的策略是什么?1•开放苗闭的原则2•从场景进行设计3.在类中包容变化・请举例说明如何根据模式为其他的模式创造场景來选择模式。比如,Bridge-Facade使用Facade模式来简化VI系统的接口,Bridge模式的实现部分之一使用Facade模式所创建的新接口•因此Bridge模式为Facade模式创造了场景・为什么说Bridge是包容变化原则的一个精彩的范例?Bridge模式中的实现部分各不相同,但都可以通过一个通用接口被访问•系统可以接纳新的实现部分,只要它也使用这个通用接口来实现。六•应用题在本书的应用案例中,为什么认为Bridge模式高于Adapter模式?请举例说明。Bridge模式的应用情景是在概念的抽象有变化及其实现方式有多个。而Adapter模式的应用情景是原有对彖的接口和需耍的接口有差别。而大多数情景下Bridge模式是作为Adapter模式的背景。也就是Bridge是Adapter的“最高模式”,在用Bridge模式封装实现时,大多数的实现并不可以派生自相同的基类,这时Adapter模式就可以派上用场了。设计模式应遵循的原则有哪些?请举例分别对它们进行解释?1・开放谱闭的原则2从场景进行设计3.在类中包容变化.第14章Strategy(策略)模式—・选择下面的类图表示的是哪个设计模式?()A装饰模式(Decorator)B策略模式(Strategy)C桥接模式(Bridge)D观察者模式(Observer)ContextStrateKy-sinitegy:Stnitcg>*•<ontextlntcrtact<)-Algonthfnlntcrtace()111CuncrctcStratqoAConcrctcStrateg)BConcrctcStratcxy<'Strateg\^\lgonthinIntCTt3€C(I;Algonthmlntertacd)*/\lgorithmintrrtucc()♦Algorithmlntrriacc()定义一系列的算法,把它们一个个封装起來,并且使它们可相互替换。这句话是对哪种模式的描述()。A观察者模式(Observer)B桥接模式(Bridge)C适配器模式(Adapter)D策略模式(Strategy)下面属于行为模式的是()<>A抽象工厂模式(AbstractFactory)B适配器模式(Adapter)策略模式(Strategy〉D外观模式(Facade)策略模式针对一组算法,将每一个算法封装到具有()接口的独立的类中,从而使得它们可以相互替换。A.不同B•—样C共同D都不是Strategy(策略)模式的意图是:()人定义一系列的算法,把它们一个个的封装起来,并且使它们可相互替换.B.为一个对象动态连接附加的职责。C•你希望只拥有一个对象,但不用全局对彖來控制对象的实例化。在对象之间定义一种一对多的依赖关系,这样当一个对彖的状态改变时,所有依赖于它的对象都将得到通知并自动更新。作者在书中称“分析瘫痪”为()。A因为问题的复杂性导致分析失败。B因为问题的复杂性导致分析无法继续进行。C过度分析或过度设计。D错误分析引起的后果。作者在《设计模式》中考虑变化的设计方式应遵循的原则中,哪一条是错误的()oA针对接口进行编程,而不是针对实现编程。B优先使用对象组合,而不是继承。C对需求中可能变化的部分,应重新设计.D在不引起重新设计的前提下,对变化的概念进行封装。以下叙述不正确的是()oAswitch语句可能导致“分支蔓延”。BC++中的函数指针和C#中的委托都可以用來将代码隐藏在精巧.紧凑.内聚的函数中。C使用继承可以实现复用。D作者认为复用是程序开发中最重要的考虑因素.对继承层次太深可能导致的问题的叙述不正确的是()。A继承层次太深导致紧内聚.B继承层次太深导致弱内聚。C继承层次太深导致紧耦合。D继承层次太深会产生冗余,并使测试困难。Strategy模式应遵循的原则中不正确的是()。A对彖都具有职责。B职责不同的具体实现是通过多态的使用完成的。C概念上相同的算法具有多个不同的实现,需要进行管理。D优先使用组合而不是继承。二填空(Strategy模式)模式是一种定义一系列算法的方法。UML是一种用来创建(软件模型)的图像语言。最基本的UML图是类图。它不仅(描述)了类,而且说明了类之间的关系。Strategy模式还简化了单元测试,因为每个算法都有自己的类,可以通过自己的(接口)单独测试。Strategy意图是定义一系列的算法,把它们一个个(封装)起來,并且使它们可相互替换。Strategy模式要求所(封装)的算法应处在使用它们的类之外。通过从一个抽彖类(派生)执行算法的所有不同方式,主模块无需再操心实际使用的是哪一个算法。在Strategy模式的使用中,将某个(变化的行为)从使用它的类中移出來,这种过程与数据库中的规范化过程非常相似。将(算法)封装在一个抽象类中。而且在某一时刻能够互换地使用其中之一的方法,这就是Strategy模式的本质。Strategy模式是一种定义(一系列)算法的方法。三.判断Strategy模式使得算法可独立于使用它的客户而变化。对从Strategy模式的概念上来说,所有算法都做相同的工作,且拥有相同的实现。错Strategy(策略)模式是一种定义算法家族的方法。对Strategy(策略)模式让我们可以将这些规则封装在一个抽象类中,然后拥有一系列的抽象派生类。错Strategy(策略)模式的本质是在一个抽彖类中封装一个算法并交替使用这些算法。对在设计模式设计中,作者提倡对变化进行封装在一个类中,再通过对它进行继承的原则。错当使用不同的规则处理算法,就可以釆用Strategy模式。错Strategy模式可以用不同的方式调用所有的算法。错Strategy模式简化了单元测试,因为每个算法都有自己的类,可以通过接口进行单独测试。对在算法设计时,采用Strategy模式会增加大量的类。对四.名词解释Strategy(策略)模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。这个模式使算法可独立于使用它的客户而变化.解耦'解耦在软件里就是要让两个对象之间保持松耦合的关系,这种关系应具有稳定、标准等特性,其作用是限制了对象修改所影响的范围.聚集聚集表示类之间的关系是整体与部分的关系O构造函数五.简答题Strategy模式的意图是什么吗?它有哪些效果?意图是让你可以使用不同的业务规则或算法——取决于它们出场的场景・效果有:Strategy(策略)模式定义了一系列的算法;switch语句或条件语句得到了避免;你必须以相同的方式调用所有的算法(它们必须拥有相同的接口)CaicreteStrategies与Coitext之间的交互可能需要在Ccaitext中加入getState之类的方法。Strategy(策略)模式是建立在哪些原则的基础上?主要建立在:对象拥有责任;这些责任的不同的特定实现通过使用多态来表现;需要将几个不同的实现按照——概念上相同的算法来管理;一个好的设计经验:将问题领域中发生的行为彼此分离也就是说,使它们解耦。这让改变对某一行为负责的类,而不会对其他行为产生不好的影响。Strategy(策略)模式对问题的解决方案是什么?以及如何实现?解决方案是:将算法的选择和算法的实现相分离.让客户可以基于场景做出选择。实现:让使用算法的类包含一个抽象类,抽象类中有一个抽象方法指定如何调用算法.每个派生类根据需要实现算法.4按照四人团的说法,Strategy策略模式的基本思想是什么?定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,使算法可独立于使用它的客户而变化.六•应用题举例说出策略模式(Strategy)的应用场景,并且画出该模式的类图。Strategy模式是一种定义一系列算法的方法•概念上来看,所有这些算法完成的都是相同的工作,只是实现不同.比如,在一个国际电子商务系统中,不同的国家需要使用不同的税额计算算法。通过Strategy模式,可以将这些规则封装在一个抽象类中,然后派生出一系列的具体类•在一个国际电子零售系统中,需要考虑为不同的国家的消费者的定单计算税费问题,请用模式的方法考虑如何解决该问题。通过Strategy模式,可以将这些规则封装在一个抽象类中,然后派生出一系列的具体类•通过从一个抽象派生类执行算法的所有不同方式,主模块就无需再操心实际使用的是哪一个,这样能够允许发生新的变化.第15章Decorator黴饰)模式—・选择若系统中的某子模块需要为其他模块()提供访问不同数据库系统的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,在打开数据库,最后对数据库进行査询,设计模式可抽象岀相同的数据库访问过程。A.外观B装饰C单间D模板方法Decorator模式的描述正确的是()。A•该模式的意图是动态地给一个对象添加一些额外的职责。就增加功能來说,该模式相比生成子类不够灵活。B•适用于在不影响其他对象的情况下,以动态.透明的方式给单个对象添加职贵。C•该模式的意图是将对象组合成树形结构以表示“部分-整体”的层次结构。该模式使得用户对单个对彖和组合对象的使用具有一致性。D该模式适用性是你想表示对象的部分-整体层次结构。下面属于结构模式的有()<>A.策略模式(Strategies)B.单例模式(Singleton)C.抽彖工厂模式(AbstractFactory)D.装饰模式(Decorator)下面的类图表示的是哪个设计模式?()<>A装饰模式(Decorator)B适配器模式(Adapter)C策略模式(Strategies)D桥接模式(Bridge)Decorator(装饰)模式的意图是:()°A•定义一系列的算法,把它们一个个的封装起來,并且使它们可相互替换。B•为一个对象动态连接附加的职责.C•你希望只拥有一个对象,但不用全局对彖來控制对彖的实例化。在对象之间定义一种一对多的依赖关系,这样当一个对彖的状态改变时,所有依赖于它的对象都将得到通知并自动更新。二填空Decorator模式将一个功能链的(动态构建)与使用功能的客户分离开來。Decorator模式对象在被装饰功能之前或者之后或者前两者同时执行自己的(附加功能)。每个Decorator对象都对其后的对象(封装)自己的新功能。就增加功能來说,Decorator模式相比生成子类更为(灵活)<.Decorator模式是为现有的功能(动态)添加附加功能的一种方法。三•判断Decorator(装饰)模式的意图是为一个对彖连接附加的职责。错每个Decorator对象在被装饰的功能之前或之后执行自己的附加功能。对Decorator(装饰)模式适用性是表示对象的部分-整体层次结构。错Decorator(装饰)模式的意图是动态地给一个对象添加一些额外的职责。就增加功能來说,该模式相比生成子类不够灵活。错Decorator(装饰)模式是为现有的功能动态添加附加功能的一种方法。对四•名词解释Decorator(装饰)模式动态地给一个对象添加一些额外的职责•Decorator(装饰)链始于一个Conponet对象,每个装饰者对象后面紧跟着另一个装饰者对象,而对象链终于COTicreteCompcHiet对象。类图是显示了模型的静态结构,特别是模型中存在的类.类的内部结构以及它们与其他类的关系等。交互图以对象为中心以类和继承为构造机制,充分利用接口和多态提供灵活性•来认识.理解.刻划客观世界和设计.构建相应的软件系统•五•简答题每个Decorator对象封装的是什么?每个Decorator对象都对其后的对象封装自己的新功能。每个Decorator对象在被装饰的功能之前或之后执行自己的附加功能。Decorator(装饰)模式的效果是什么?被添加的功能属于小的对象。好处是可以在ConcreteCoiDpkt对象的功能之前或之后动态添加功能.虽然_个装饰者可以在被装饰者之前或之后添加功能,但对象链总是以ConcreteCompcment对象结束・Decorator(装饰)模式的解决方案是什么?如何实现?解决方案是允许扩展一个对象的功能,而不必借助于子类型化•实现:创建一个抽象类来表示原始的类和要添加到这个类上的新功能。在装饰者类中,将“对新功能的调用”放在“对紧随其后对象的调用”之前或之后,以获得正确的顺序。画出Decorator(装饰)模式的类图。六•应用题1•请结合实际应用说明Decorator模式是怎样对问题按功能进行分解?Decorator模式并不通过一个控制方法控制新増功能,而是建议以需要的正确顺序将所需功能串联起来,进行控制.Decorator模式将这样一个功能链的动态构建与使用功能的客户分离开来•而且还将功能链的构建与链组件分离开来.这样就能灵活使用这些组件,比如,表头,页脚和SalesTicket分离开来.Decorator链有什么作用?它是怎样形成的,请举一个例子说明?第16章Singleton(单件)和Double-CheckedLocking(双重检査锁定)模式—•选新Singleton模式适用于()。A当类有多个实例而且客户可以从一个众所周知访问点访问它时。B当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时•C当构造过程必须允许被构造的对象有不同的表示时。D生成一批对彖时。保证一个类仅有一个实例,并提供一个访问它的全局访问点。这句话是对下列哪种模式的描述()。A.外观模式(Facade)B策略模式(Strategies)适配器模式(Adapter)单例模式(Singleton)单例模式的作用是()<>A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。C.保证一个类仅有一个实例,并提供一个访问他的全局访问点。D.单例模式仅仅应用于多线程应用程序中。下面不属于结构模式的有()。几适配器模式(Adapter)B.单例模式(Singleton)桥接模式(Bridge)D.装饰模式(Decorator)单例模式(Singleton)(装饰)模式的意图是:()。几定义一系列的算法,把它们一个个的封装起來,并且使它们可相互替换。B.为一个对象动态连接附加的职责。C•你希望只拥有一个对象,但不用全局对象来控制对象的实例化•在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新。二填空(单例)模式确保某一个类仅有一个实例,并自行实例化向整个系统提供这个实例。(单例)模式只应在有真正的“单一实例”的需求时才可使用。单例模式属于(创建型)模式。Singleton(单件)模式和Double-CheckedLocking模式都用以确保一个特定的类只有一个对象被(实例化)。Singleton(单件)模式用于单线程应用程序,Double-CheckedLocking模式用于(多线程)应用程序。三.判断单例模式确保某一个类具有多个实例,并自行实例化向整个系统提供这个实例。错Singleton模式适用于当类只能有一个实例,而且客户可以从一个公共的访问点访问它。对Double-CheckedLocking模式既可以用于单线程又能应用于多线程应用程序。错Singleton(单件)模式的工作方式是拥有一个特定的方法,这个方法被用于实例化需要的对象。对Singleton(单件)模式属于结构性模式。错四•名词解释Singleton(单件)模式保证一个类仅有一个实例,并提供一个访问它的全局访问点.Double-CheckedLocking模式是singleton的多线程版本•多线程在单个程序中同时运行多个线程完成不同的工作,称为多线程.封装五•简答题1・Singleton(单件)模式怎样工作?Singleton(单件)模式的工作方式是:拥有一个特定的方法,这个方法被用于实例化需要的对象。当这个方法被调用时,它检査这个对象是否己经被实例化.如果对象己经被实例化,这个方法仅仅返回这个对象的一个引用.如果对象尚未实例化,这个方法将对象实例化并返回这个新的实例的引用.为了确保这是创建这个类型的对象的惟一途径,在这个类中将构造函数定义为protected或private。Singleton(单件)模式和Double-CheckedLocking模式之间有什么区别?Singletai(单件)模式用于单线程应用程序,而Double-CheckedLocking模式用于多线程应用程序。描述Singleton(单件)模式意图以及效果?Singleton(单件)模式的意图是你希望只拥有一个对象,但不用全局对象来控制对象的实例化❷效果是客户对象不需要关心是否已经有Singleton的实例存在.这可以在Singleton内部得到控制•Singleton(单件)模茂的用途是什么?它让我们可以仅仅对对象进行一次实例化,而不要求客户对象关心这个对象是否存在•六.应用题在一个多线程应用程序中,如果使用Singleton模式,试分析可能会出现哪些问题。出现A进程和B进程同时访问某个对象的时候,发现它没有实例化过,结果A.B进程分别将该类实例化一次,出现冗余对象的情况•这个情况并不多见,但是C++中出现了就是内存泄露的重大问题。2•请说明Singleton模式的动机和解决方案,这种处理方案和对象处理自己的单一实例化是否矛盾,请给出你的看法?第17章Observer®察者)模式—・选择在观察者模式中,表述错误的是()。A•观察者角色的更新是被动的。B.被观察者可以通知观察者进行更新C.观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行•D.以上表述全部错误。下面的类图表示的是哪个设计模式?()。A策略模式(Strategies)B装饰模式(Decorator)C桥接模式(Bridge)D观察者模式(Observer)当我们想创建一个具体的对彖而又不希望指定具体的类时,可以使用()模式。A•创建型B.结构型C行为型D.以上都可以下列模式中,属于行为模式的是()。A•工厂模式B观察者C适配器D以上都是Observer模式不适用于()。A当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的对彖中以使它们可以各自独立的改变和复用。B当对一个对彖的改变需要同时改变其他对象,而不知道具体有多少个对象有待改变时。C当一个对象必须通知其它对彖,而它又不能假定其它对彖是谁,也就是说你不希望这些对彖是紧耦合的。D—个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作•下面的类图表示的是哪个设计模式?()。A观察者模式B单例模式C桥接模式D策略模式7.观察者模式定义了一种()的依赖关系。A一对多C多对多B_对_D以上都有可能下列模式中,属于行为模式的是()。A•外观模式B观察者模式C单例模式D桥接模式对观察者模式,以下叙述不正确的是()oA必须找出所有希望获得通知的对象•B所有的观察者对象有相同的接口。C如果观察者的类型相同,目标就可以轻易地通知它们。D在大多数情况下,观察者负责了解自己观察的是什么,目标需要知道有哪些观察者依赖自己。对于观察者模式,以下叙述正确的是()oA当对象之间存在依赖关系,就适宜采用观察者模式。B如果对象之间的以来关系是固定的,采用观察者模式会带来负面影响.C如果需要得到某事件通知的对象列表是变化的,不适宜采用观察者模式。D以上叙述皆不正确。二填空(观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。观察者模式定义了一种(一对多)的依赖关系,让多个观察者对象同时监听某一个主题对彖。Observer(观察者)模式是一个(行为)模式。当依赖关系固定(或儿乎固定)时,加入一个Observer模式可能只会增加(复杂性)。为了对所有Observer类型的对象实现Observer接口,有时候需要使用(Adapter)模式。如果系统在不同的情况下运行,或由不同的用户运行,观察者列表会不同,这时适宜用(Observer)模式。一个观察者可能只需要处理事件的某些情况,在这种情况下,观察者必须将额外的(通知)筛选掉。对观察者模式,观察者通常将观察某个事件的责任交给(中心对象或Sfcject)。Subject类将实现一个(notify)方法来遍历其Observer对彖列表,并调用每个Observer对彖的update方法。当Subject对彖有了已注册的Observer对象,事件发生时,Subject对象通知Observer对彖将非常简单。为此,每个Observer对象都要实现一个(update)方法。三.判断创建型模式关注的是组织类和对象的常用方法。错常用的设计模式可分为过程型、创建型和结构型。错当对象之间存在依赖关系时就应该使用Observer(观察者)模式。错当依赖关系固定(或几乎固定)时,加入一个Observer(观察者)模式可能只会增加复杂性。对一个Observer(观察者)模式可能只需要处理事件的某种特定情况。对对观察者模式,触发事件的对象一一Subject对彖不需要知道观察事件的所有对彖。对对观察者模式,Subject不知道与哪种观察者通信,Observer类封装了各种特定的Observero对Observer对象有多种,但都从Subject对象收集信息,并收集相应的操作结果。错Observer类包含了需要得到通知的对彖的概念,并为目标对彖提供一个通知Observer的公共接口。对对观察者模式,要求所有的Observer负责将自己注册到目标对象上。对四.名词解释Observer(观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新•结构型模式将现存的对象结合在一起,处理接口,将实现与抽象类联系起来。3•行为型模式提供一种显得灵活(变化〉的行为,包容变化的模式。例如,strategy模式和observer模式•创建型模式创建或实例化对象五•简答题GOF设计模式按照模式的目的可分为哪三类?其目的分别是什么?结构型:将现存的对象结合在一起.行为型:提供一种显得灵活(变化)行为。创建型:穿件或实例化对象。Observer模式的定义,它要解决什么样的问题?Observer(观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.解决的问题是当某个事件发生时,你需要向一系列对象发出通知,而这个对象的列表是不断变化的。Observer(观察者)模式的效果。效果是如果某些Observer只对全部事件的一个子集感兴趣,那么Subject可能会告诉Observer它们不需要知道的事件.如果在Subject通知Observer之后,Observer又转过来请求附加信息,就可能?I要额外的通信•Observer(观察者)模式如何实现解决方案的?让“希望知道某个事件何时发生”的对象(Observer〉将自己注册到另一个“监视事件发生或自己触发事件”的对象(Subject)±o当事件发生时,Subject告诉Observer"你关心的事情已经发生了”•为了能让所有的观察者型对象实现Observer接口,有时候需要使用Adapter模式。六•应用题给出Observer的定义以及它的意图,举一个例子说明该模式的适用场景,最后画出它的类图。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新•解决的问题是当某个事件发生时,你需要向一系列对象发出通知,而这个对象的列表是不断变化的。例如,在Subject对象注册了它的一个Observer对象,当事件发生时,Subject对象向Observer对象发出通知就非常简单了•为了实现这一功能,每个Observer类都实现一个叫做updata的方法•Subject类这样实现notify方法:堪历自己的Observer对象列表,调用其中每个Observer对象的sdata方法。Updata方法应该包含处理事件的代码。根据你的理解,请你谈谈结构型和行为型模式的区别,并结合实际的应用举例说明。结构型模式的目的是将现存的对象结合在一起,用绘是处理接口,将实现与抽象类联系起来。而行为型模式的目的是提供一种显得灵活的行为,用途是包容变化的.例子:结构型模式中的Bridge模式或Decorator模式与行为型模式中的Strategy模式的比较.第18章TemplateMethod(模板方法)模式—・选择以下属于行为对象模式的是()。A模板模式(TemplateMethod)B装饰模式(Decorator)C桥接模式(Bridge)D丄厂方法模式(FactoryMethod)模板方法的作用是()<>A当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。C.保证一个类仅有一个实例,并提供一个访问他的全局访问点。D.在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。TemplateMethod(模版)模式的意图是:()。几定义一系列的算法,把它们一个个的封装起來,并且使它们可相互替换。B•为一个对象动态连接附加的职责。C•你希望只拥有一个对象,但不用全局对彖來控制对象的实例化。D•定义一个操作中的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。有关模板方法模式,以下叙述不正确的是()。A允许定义不同的子过程,同时维护基本过程的一致性。B将定义和操作相互分离.C创建一个抽象类,用抽象方法实现一个过程,这些抽象方法必须在子类中实现。D实现抽彖方法的子类的步骤可以独立变化,并且这些步骤可以采用Strategy模式來实现。在釆用模板方法模式对系统连接不同数据库(例如Oracle和SQLServer)的连接时,以下叙述不正确的是()。A尽管Oracle和SQLServer数据库有不同的连接.査询方法,但它们有相同的概念上的过程。B使用模板方法模式,可以在抽象类中捕捉共同点而在派生类中封装不同点。C模板方法模式用于控制连接数据库操作的一个序列的行为步骤。D可以采用通用的实现方法建立对不同数据库的连接.二填空TemplateMethod模式准备一个抽象类,将部分逻辑以(具体方法)以及具体构造子类的形式实现,然后声明一些抽象方法來迫使子类实现剩余的逻辑。TemplateMethod(模版)模式是用以帮助从不同的步骤中抽象出一个(通过的)过程模式。TemplateMethod(模版)模式让我们可以在抽彖类中捕捉共同点而在(派生类)中封装不同点。当遇到一个心得数据库时,TemplateMethod(模版)模式提供了一个(样板)让我们填充。我们创建一个新的派生类,并根据新的数据库的要求实现特定的步骤。三.TemplateMethod三.TemplateMethod(模版)模式只是在一起工作的Strategies模式的集合。错TemplateMethod(模版)模式适用于有儿个相同且概念上相似的步骤存在的情况。错3.TemplateMethod(模版)模式被用于控制一个序列的行为步骤3.TemplateMethod(模版)模式被用于控制一个序列的行为步骤,这些步骤通常是相同的。错TemplateMethod是用以帮助从不同的步骤中抽象出一个通用的过程的模式。对TemplateMethod(模版)模式使得子类可以改变一个算法的结构即可重定义该算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石油开采与能源技术应用考核试卷
- 玉石的造船与海洋文化考核试卷
- 笔的制造工艺参数优化与生产试验考核试卷
- 人教版六年级上册数学《圆的面积》课件
- 教育营销策略考核试卷
- 肉制品加工业的营销创新与品牌塑造考核试卷
- 渔业养殖饲料配方优化与效果评估考核试卷
- 感恩节介绍课件
- 烟草批发商区域市场开发考核试卷
- 木制品生产过程中的质量控制点考核试卷
- 2025购销合同(电子产品)范文
- 基于全生命周期的绿色建筑成本影响因素研究
- 2025年普法知识竞赛题库及答案(共80题)
- 心力衰竭护理查房 课件
- 新型节能型建筑材料的发展方向论文
- 最新班组级安全培训试卷及答案
- 工程开工令模板
- 10000中国普通人名大全
- 2022更新国家开放大学电大《计算机组网技术》网络核心课形考任务三及四答案
- 武广客运专线隧道防排水技术的突破QC成果
- 部编版五年级道德与法治下册第三单元《百年追梦复兴中华》教材分析单元分析
评论
0/150
提交评论