设计模式-复习题_第1页
设计模式-复习题_第2页
设计模式-复习题_第3页
设计模式-复习题_第4页
设计模式-复习题_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、(1)以下是模式的基本要素的是 。ABCDA)名称 B)意图C)解决方案 D)参与者和协作者(2)常用的描述设计模式的格式有 。ABCDA)意图 B)动机 C)适用性D)结构(3)以下哪些问题通过应用设计模式能够解决 。AD A)指定对象的接口B)排除软件BUG C)确定软件的功能都正确实现D)设计应支持变化(4)面向对象系统中功能复用的最常用技术是 。ABA)类继承B)对象组合C)使用抽象类D)使用实现类(5)以下属于行为对象模式的是 。ABCDA)模板(Template Method)模式 B)迭代器(Iterator)模式 C)命令(Command)模式D)观察者(Observer)模式

2、(6)以下属于创建型模式的是 。ACA)抽象工厂(Abstract Factory)模式 B)合成(Composite)模式 C)单例(Singleton)模式D)桥接(Bridge)模式(7)在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在。 ADA)适配器(Adapte)模式 B)合成(Composite)模式 C)原型(Prototype)模式D)桥接(Bridge)模式(8)单例模式中,两个基本要点( a b )和单子类自己提供单例 A .构造函数私有 B.唯一实例 C.静态工厂方法 D.以上都不对(9)常用的基本设计模式可分为 。AA)创建型、结构型和行为型

3、B)对象型、结构型和行为型C)过程型、结构型和行为型D)抽象型、接口型和实现型(10)以下关于创建型模式说法正确的是 。AA)创建型模式关注的是对象的创建 B)创建型模式关注的是功能的实现C)创建型模式关注的是组织类和对象的常用方法 D)创建型模式关注的是对象间的协作 (11)封装分布于多个类之间的行为的模式是 。 CA)观察者(Observer)模式 B)迭代器(Iterator)模式 C)访问者(Visitor)模式D)策略(Strategy)模式 (12)Observer(观察者)模式适用于 。CA)当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的对象中以使它

4、们可以各自独立地改变和复用。 B)当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变时。 C)当一个对象必须通知其它对象,而它又不能假定其它对象是谁。也就是说你不希望这些对象是紧密耦合的。D)一个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作。(13)Java的异常处理机制可理解为哪一种行为模式 。CA)观察者(Observer)模式 B)迭代器(Iterator)模式 C)职责链(Chain of Responsibility)模式D)策略(Strategy)模式(14)结构型模式中最体现扩展性的几种模式是 。CA)适配器(Adapt

5、e)模式 B)合成(Composite)模式 C)装饰(Decorator)模式D)桥接(Bridge)模式(15)行为类模式使用 在类间分派行为。CA)接口 B)继承机制C)对象组合 D)委托(16)以下哪个模式是利用一个对象,快速地生成一批对象 。 CA)抽象工厂(Abstract Factory)模式 B)合成(Composite)模式 C)原型(Prototype)模式D)桥接(Bridge)模式1、设计模式一般用来解决什么样的问题( a)A.同一问题的不同表相 B不同问题的同一表相C.不同问题的不同表相 D.以上都不是2、下列属于面向对象基本原则的是( c )A.继承 B.封装 C.

6、里氏代换 D都不是3、Open-Close原则的含义是一个软件实体( a )A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。A.创建型 B.结构型 C行为型 D.以上都可以5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( d )的表述A.开-闭原则 B.接口隔离原则C.里氏代换原则 D.依赖倒转原则6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。A, 委派 B.继承 C创建 D.以上都不对7、设计模式的两大主题

7、是( d )A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发 D.系统复用与系统扩展8、单例模式中,两个基本要点( a b )和单子类自己提供单例A .构造函数私有 B.唯一实例C.静态工厂方法 D.以上都不对9、下列模式中,属于行为模式的是( b ) A.工厂模式 B观察者 C适配器 以上都是10、“不要和陌生人说话” 是( d )原则的通俗表述 A.接口隔离 B.里氏代换C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解11、构造者的的退化模式是通过合并( c )角色完成退化的。 A.抽象产品 B产品 C创建者 D使用者12、单子(单例,单态)模式类图结构如下:

8、 下列论述中,关于”0.1”表述的不正确的是( d ) A.1表示,一个单例类中,最多可以有一个实例. B.”0.1”表示单例类中有不多于一个的实例 C.0表示单例类中可以没有任何实例 D.0表示单例类可以提供其他非自身的实例13、对象适配器模式是( a )原则的典型应用。 A.合成聚合复用原则 B.里式代换原则 C.依赖倒转原则 D.迪米特法则14、静态工厂的核心角色是(a) A.抽象产品 B.具体产品 C.静态工厂 D.消费者15、下列关于静态工厂与工厂方法表述错误的是:( a ) A.两者都满足开闭原则:静态工厂以if else方式创建对象,增加需求的时候会修改源代码 B.静态工厂对具体

9、产品的创建类别和创建时机的判断是混和在一起的,这点在工厂方法中 C.不能形成静态工厂的继承结构 D.在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的。16、在观察者模式中,表述错误的是( c ) A.观察者角色的更新是被动的。 B.被观察者可以通知观察者进行更新 C.观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。 D.以上表述全部错误。17.对于违反里式代换原则的两个类,可以采用的候选解决方案错误的是:( d ) A.创建一个新的抽象类C,作为两个具体类的超类,将A 和B 共同的行为移动到C 中,从而解决A和B 行为不完

10、全一致的问题。 B.将B到A的继承关系改组成委派关系。 C.区分是“IS-a”还是”Hasa”。如果是“Is-a”,可以使用继承关系,如果是”Hasa”应该改成委派关系 D.以上方案错误18.对象组合的有点表述不当的是( d ) A. 容器类仅能通过被包含对象的接口来对其进行访问。 B. “黑盒”复用,封装性好,因为被包含对象的内部细节对外是不可见。 C. 通过获取指向其它的具有相同类型的对象引用, 可以在运行期间动态地定义(对象的)组合 D.造成极其严重的依赖关系。19.关于继承表述错误的是:( d ) A.继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。 B.泛化类(超类)

11、可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加属性和方法来进行实现的扩展。 C.破坏了封装性,因为这会将父类的实现细节暴露给子类。 D.继承本质上是“白盒复用”,对父类的修改,不会影响到子类。20.对于依赖倒转的表述错误的是( e ) A.依赖于抽象而不依赖于具体,也就是针对接口编程。 B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。 C.从选项B的角度论述,一个对象可以有多个接口。 D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。 E.此题没有正确答案。填空1.面向对象的六条基本原

12、则包括:开闭原则,里式代换原则,合成聚合原则以及(依赖倒转),(迪米特法则),(单一原则),(接口隔离)。2.在存在继承关系的情况下,方法向(超类)方向集中,而数据向(子类)方向集中。3.适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对象适配器采用的是(组合聚合)关系。4.设计模式的基本要素有(名字 ),(意图 ),(问题 ),( 解决方案 ),(参与者与协作者 ),( 实现),(一般性结构)。5.创立型模式的根本意图是要把(对象的创建)和(使用分离)的责任进行分离,从而降低系统的(耦合度)。6.工厂模式分为(简单工厂),(工厂方法),(抽象工厂)三种

13、类型7.门面模式是(迪米特)法则的典型运用8.MVC模型的基本工作原理是基于(观察者)模式,实现是基于(命令)模式9.设计模式的思想根源是(开闭)基本原则的宏观运用,本质上是没有任何模式的,发现模式的人永远是大师,而死守模式的人,最对只能是一个工匠.10.MVC中使用的模式两种(Observer)观察者模式(Strategy)策略模式(英文单词)判断1. 抽象不应该依赖于细节,细节应当依赖于抽象。错2. 大多数设计模式还让软件更具有可修改性。对3. Open-Close原则的含义是一个软件实体应当对扩展开放,对修改关闭。对4. 常用的设计模式可分为过程型、创建型和结构型。错5. Adapter

14、模式和Fa?ade模式总是在别的什么东西创造的场景中被定义。错6. Strategy模式使得算法可独立于使用它的客户而变化。对7. 从Strategy模式的概念上来说,所有算法都做相同的工作,且拥有相同的实现。错8. Strategy(策略)模式是一种定义算法家族的方法。对9. Decorator(装饰)模式的意图是为一个对象连接附加的职责。错10. 每个Decorator对象在被装饰的功能之前或之后执行自己的附加功能。对11. 适配器模式属于创建型模式。 错12. 在设计模式中,“效果”只是指“原因和结果”。 对13. 设计模式使代码编制不能真正工程化。 错14. 设计模式的两大主题是系统复

15、用与系统扩展。 对15. Fa?ade(外观)模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。 对16. 外观模式,当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。 错17. Fa?ade模式为子系统中的一组接口提供的界面可能不一致。错18. Fa?ade外观模式只能为方法调用创建更简单的接口,不能减少客户必须处理的对象数量。19. 对象适配器模式是合成聚合复用原则的典型应用。对20. Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。对 名词解释1. 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验

16、的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。2. 模板模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。3. 模式就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。4. 内聚度模块内部各成分彼此结合的紧密程度。5. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。6. 设计模式的基本要素有哪些?名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF参考。7. 设计模式中一般都遵循的

17、原则有什么?开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。8. 四人团针对“创建优秀面向对象设计”建议了哪些策略?针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。简答题1.什么是设计模式?设计模式的目标是什么?设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。2. Strategy模式的意图是什么吗?它有哪些效果?意图是让你可以使用不同的业务规则或算法-取决于它们出场的场景。效果有:Strategy(策略)模式定义了一系列的算法;swit

18、ch语句或条件语句得到了避免;你必须以相同的方式调用所有的算法(它们必须拥有相同的接口)ConcreteStrategies与Context之间的交互可能需要在Context中加入getState之类的方法。3. Strategy(策略)模式对问题的解决方案是什么?以及如何实现?解决方案是:将算法的选择和算法的实现相分离。让客户可以基于场景做出选择。实现:让使用算法的类包含一个抽象类,抽象类中有一个抽象方法指定如何调用算法。每个派生类根据需要实现算法。4. Decorator(装饰)模式的效果是什么?被添加的功能属于小的对象。好处是可以在ConcreteComponent对象的功能之前或之后动

19、态添加功能。虽然一个装饰者可以在被装饰者之前或之后添加功能,但对象链总是以ConcreteComponent对象结束。5 设计模式的基本要素有哪些?名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF参考。6. Strategy(策略)模式是建立在哪些原则的基础上?主要建立在:对象拥有责任;这些责任的不同的特定实现通过使用多态来表现;需要将几个不同的实现按照-概念上-相同的算法来管理;一个好的设计经验:将问题领域中发生的行为彼此分离-也就是说,使它们解耦。这让改变对某一行为负责的类,而不会对其他行为产生不好的影响。7. 按照四人团的说法,Strategy策略模式的基本思想是什么?定义

20、一系列的算法,把它们一个个封装起来,并且使它们可相互替换,使算法可独立于使用它的客户而变化。8. Decorator(装饰)模式的解决方案是什么?如何实现?解决方案是允许扩展一个对象的功能,而不必借助于子类型化。实现:创建一个抽象类来表示原始的类和要添加到这个类上的新功能。在装饰者类中,将“对新功能的调用”放在“对紧随其后对象的调用”之前或之后,以获得正确的顺序。应用题1. 根据你对Bridge 模式的理解,概要描述使用该模式的应用要求,并给出相应的设计类图。当存在一个抽象有不同实现时Bridge模式最为有用,它可以使抽象和实现相互独立地进行变化。2. 举例说明使用Bridge 模式的场合,给

21、出在该场合下使用Bridge 模式的解决方案,并说明该解决方案的优点。打印驱动程序是Bridge模式最典型的例子,也是最适合应用Bridge模式的场合。Bridge模式的真正威力在于它能够帮助我们看到什么时候应该从问题域中提取实现。也就是说,有时候有一个实体X使用系统S,一个实体Y使用系统T。我们可能认为X总是与S相伴,而Y总是与T相伴,因此就将它们联系(耦合)起来。Bridge模式提醒我们,可以抽象出S和T,这样更好,也就是说,Bridge模式最有用的地方,是在解耦抽象与实现之前考虑Bridge模式是否适用。3. 请结合实际应用说明Decorator模式是怎样对问题按功能进行分解?Decor

22、ator模式并不通过一个控制方法控制新增功能,而是建议以需要的正确顺序将所需功能串联起来,进行控制。Decorator模式将这样一个功能链的动态构建与使用功能的客户分离开来。而且还将功能链的构建与链组件分离开来。这样就能灵活使用这些组件,比如,表头,页脚和SalesTicket分离开来。4. 在一个国际电子零售系统中,需要考虑为不同的国家的消费者的定单计算税费问题,请用模式的方法考虑如何解决该问题。通过Strategy模式,可以将这些规则封装在一个抽象类中,然后派生出一系列的具体类。通过从一个抽象派生类执行算法的所有不同方式,主模块就无需再操心实际使用的是哪一个,这样能够允许发生新的变化。5.

23、 请结合抽象工厂模式,说明在实际应用中如何生成正确的对象。决定需要哪个工厂对象实际上与确定使用哪一组对象是相同的。例如,在驱动程序问题中,有一组低分辨率动程序和一组高分辨率驱动程序,怎样才能知道自己需要哪一组呢? 在类似这样的例子中,很可能通过一个配置文件获知这一信息。然后可以编写几行代码,根据配置信息将合适的工厂对象实例化。还可以使用Abstract Factory模式,不同应用程序都使用同一子系统。在这种情况下,工厂对象将传给子系统,告诉子系统将要使用哪些对象,此时,通常主系统知道子系统需要那一组对象,在调用子系统之前,将实例化正确的工厂对象。6 请结合实际应用说明Decorator模式是怎样对问题按功能进行分解?Decorator模式并不通过一个控制方法控制新增功能,而是建议以需要的正确顺序将所需功能串联起来,进行控制。Decorator模式将这样一个功能链的动态构建与使用功能的客户分离开来。而且还将功能链的构建与链组件分离开来。这样就能灵活使用这些组件,比如,表头,页脚和SalesTicket分离开来7. 给出Observer的定义以及它的意图,举一个例子说明该模式的适用场景,最后画出它的类图。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。解决的

温馨提示

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

评论

0/150

提交评论