当前位置:文档之家› 设计模式总复习题

设计模式总复习题

总复习题复习参考资料:1.GoF 设计模式2.设计模式解析3.易学设计模式4.大话设计模式5.深入浅出设计模式以参考资料为主,模拟试题1-5中有些题答案在一些附加资料中模拟试题1一、选择题(分值20)1. 设计模式一般用来解决什么样的问题( )A.同一问题的不同表相 B不同问题的同一表相C.不同问题的不同表相D.以上都不是2. 下列属于面向对象基本原则的是( )A.继承B.封装C.里氏代换 D都不是3. Open-Close原则的含义是一个软件实体( )A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4. 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。

A.创建型B.结构型 C行为型 D.以上都可以5. 要依赖于抽象,不要依赖于具体。

即针对接口编程,不要针对实现编程,是( )的表述A. 开-闭原则B. 接口隔离原则C. 里氏代换原则D. 依赖倒转原则6. 依据设计模式思想,程序开发中应优先使用的是( )关系实现复用。

A, 委派 B.继承 C创建 D.以上都不对7. 设计模式的两大主题是( )A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展8. 单体模式中,两个基本要点( )和单体类自己提供单例A .构造函数私有 B.唯一实例C.静态工厂方法D.以上都不对9. 下列模式中,属于行为模式的是( )A.工厂模式 B观察者 C适配器以上都是10. “不要和陌生人说话”是( )原则的通俗表述A.接口隔离B.里氏代换C.依赖倒转D.迪米特二、填空题(分值20)1. 软件体系结构是指一个系统的有目的的设计和规划,这个设计规划既不描述,也不描述,它只描述系统的及其相互的。

2.一个UML模型只描述了一个系统,它并没告诉我们系统是。

3.接口是可以在整个模型中反复使用的一组行为,是一个没有而只有的类。

4.多重性指的是,某个类有个对象可以和另一个类的对象关联。

5.当一个类的对象可以充当多种角色时,关联就可能发生。

6.在泛化关系中,可以替代。

也就是说,后者出现的地方,前者都可以出现。

但是反过来却不成立。

7.最通常的依赖关系是一个类操作的中用到了的定义。

8.组成是的聚集,因为聚集中的每个部分体只能属于整体。

9.实现的符号和继承的符号有相似之处,两者的唯一差别是实现关系用表示,继承关系用表示。

10. 设计模式中应优先使用而不是。

三、判断题(分值15)1.适配器模式属于创建型模式()2.在设计模式中,“效果”只是指“原因和结果”()3.设计模式使代码编制不能真正工程化()4.面向对象语言编程中的异常处理,可以理解为责任链模式()5.反模式就是反对在软件开发过程中使用设计模式()四、问答题(分值30)1.什么是设计模式设计模式目标是什么2.设计模式中一般都遵循的原则有什么3.“Gang of Four”针对“创建优秀面向对象设计”建议了哪些策略4.面向对象系统中功能复用的两种最常用技术是什么5.只根据抽象类中定义的接口来操纵对象有什么好处五、应用题(分值15)公司架构:经理、工程师、技师和后勤人员都是公司的雇员,经理管理工程师、技师和后勤人员。

高层经理领导较低级别的经理。

典型层次图如下:可以使用哪种设计模式实现公司的层级关系并说明为什么模拟试题2一、选择题(分值20)1. 在观察者模式中,表述错误的是()A. 观察者角色的更新是被动的。

B. 被观察者可以通知观察者进行更新C. 观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。

D. 以上表述全部错误。

2. 对于违反里式代换原则的两个类,可以采用的候选解决方案错误的是:()A. 创建一个新的抽象类C,作为两个具体类的超类,将A 和B 共同的行为移动到C 中,从而解决A和B 行为不完全一致的问题。

B. 将B到A的继承关系改组成委派关系。

C. 区分是“IS-a”还是”Has-a”。

如果是“Is-a”,可以使用继承关系,如果是”Has-a”应该改成委派关系D. 以上方案错误3. 下列模式属于结构型设计模式的是()A. CompositeB. 享元(Flyweight)模式C. 单体模式D. 工厂方法4. 关于继承表述错误的是:()A. 继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。

B. 泛化类(超类)可以显式地捕获那些公共的属性和方法。

特殊类(子类)则通过附加属性和方法来进行实现的扩展。

C. 破坏了封装性,因为这会将父类的实现细节暴露给子类。

D. 继承本质上是“白盒复用”,对父类的修改,不会影响到子类。

5. 对于依赖倒转的表述错误的是()A. 依赖于抽象而不依赖于具体,也就是针对接口编程。

B. 依赖倒转的接口并非语法意义上的接口,而是一个类对其他对象进行调用时,所知道的方法集合。

C. 从选项B的角度论述,一个对象可以有多个接口。

D. 实现了同一接口的对象,可以在运行期间,顺利地进行替换。

而且不必知道所用的对象是那个实现类的实例。

E. 此题没有正确答案。

6. 可以使用哪一种设计模式限制类的实例唯一()A. 工厂方法B. 生成器模式C. 原型模式D.单体模式7. Java数据库连接库JDBC用到哪种设计模式()A. 生成器B.工厂方法C.抽象工厂 D.单体8. 关于运用GOF工厂方法的效果Consequences,说法不正确的是()A. 将客户代码与应用相关的类解耦B. 它使得所涉及的产品系列可替换C. 它有利于产品的一致性D.它较易于支持新种类的产品8. 在应用程序中可用哪些设计模式分离出算法()A. 工厂方法B. 策略模式C. 访问者模式D. 装饰器模式9. 工厂方法也称为()A. 抽象工厂B. 抽象构造器C. 虚工厂D. 虚构造器10. 可以使用哪种设计模式将抽象和实现解耦,使得抽象和实现可以独自变化()A. 适配器模式B.桥接模式C. 外观模式D.组合桥接模式二、填空题(分值20)1.面向对象的七条基本原则包括:开闭原则,里式代换原则,合成聚合原则以及(),(),(),()。

2.在存在继承关系的情况下,方法向()方向集中,而数据向()方向集中。

3.适配器模式,分为类的适配器和对象的适配器两种实现。

其中类的适配器采用的是()关系,而对象适配器采用的是()关系。

4.设计模式的四个基本要素是(),(),()和()。

5..创建型模式的根本意图是要把()和()的责任进行分离,从而降低系统的()。

6.工厂模式分为( ),( ),( )三种类型。

7.门面模式是( )法则的典型运用8.MVC模型的基本工作原理是基于( )模式,实现是基于()模式9.设计模式的思想根源是( )基本原则的宏观运用,本质上是没有任何模式的,发现模式的人永远是大师,而死守模式的人,最对只能是一个工匠.三、判断题(分值15)1.虚拟代理可以使用一个小对象代替大对象,从而减少系统的资源的消耗,提高系统运行速度。

()2.命令模式可以消除请求发送者与请求接收者彼此之间的耦合,使得对象之间的关系更加灵活。

()3.解释器模式是对象行为型模式,通常较少使用。

()4.迭代器模式是开闭原则最好体现,因为迭代器模式将聚合对象和迭代器分离开来。

()5.中介者模式设计符合单一职责原则。

()四、问答题(分值30)1. 在MVC模型中M、V、C分别指什么简述它们之间的关系2. 什么是开闭原则3. 设计数据库的系统日志,要考虑使用哪些设计模式4. 使用工厂模式的主要原因是什么5. 在面向对象设计中,《编译原理》的有限状态机可以什么样解决方案完成五、应用题(分值20)考虑如下场景的设计:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。

问:(1)设计可能用到什么设计模式(2)画出其类图。

模拟试题3一、多项选择题(分值30)(1)以下是模式的基本要素的是()A)名称 B)意图C)解决方案 D)参与者和协作者(2)常用的描述设计模式的格式有()A)意图 B)动机 C)适用性 D)结构(3)以下哪些问题通过应用设计模式能够解决()。

A)指定对象的接口B)排除软件BUGC)确定软件的功能都正确实现D)设计应支持变化(4)面向对象系统中功能复用的最常用技术是()。

A)类继承B)对象组合C)使用抽象类D)使用实现类(5)常用的基本设计模式可分为()。

A)创建型、结构型和行为型B)对象型、结构型和行为型C)过程型、结构型和行为型D)抽象型、接口型和实现型(6)以下关于创建型模式说法正确的是()。

A)创建型模式关注的是对象的创建B)创建型模式关注的是功能的实现C)创建型模式关注的是组织类和对象的常用方法D)创建型模式关注的是对象间的协作(7)以下属于创建型模式的是()。

A)抽象工厂(Abstract Factory)模式B)合成(Composite)模式C)单例(Singleton)模式D)桥接(Bridge)模式(8) ( )模式是利用一个对象,快速生成一批对象。

A)抽象工厂(Abstract Factory)模式B)合成(Composite)模式C)原型(Prototype)模式D)桥接(Bridge)模式(9)在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。

主要体现在( )。

A)适配器(Adapter)模式B)合成(Composite)模式C)原型(Prototype)模式D)桥接(Bridge)模式(10)结构型模式中最体现扩展性的几种模式是( )A)适配器(Adapter)模式B)合成(Composite)模式C)装饰(Decorator)模式D)桥接(Bridge)模式(11)行为类模式使用()在类间分派行为。

A)接口B)继承机制C)对象组合D)委托(12)以下属于行为对象模式的是( )A)模板(Template Method)模式B)迭代器(Iterator)模式C)命令(Command)模式D)观察者(Observer)模式(13)封装分布于多个类之间的行为的模式是( )A)观察者(Observer)模式B)迭代器(Iterator)模式C)访问者(Visitor)模式D)策略(Strategy)模式(14)Observer(观察者)模式适用于( )A)当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。

B)当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变时。

C)当一个对象必须通知其它对象,而它又不能假定其它对象是谁。

也就是说你不希望这些对象是紧耦合的。

D)一个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作。

相关主题