设计模式考试复习题(含答案) 下载本文

内容发布更新时间 : 2024/10/18 18:28:46星期一 下面是文章的全部内容请认真阅读。

1. 设计模式具有的优点( A )。A. 适应需求变化

2. 下图描述了一种设计模式(Client),该设计模式不可以( A )。A. 动态决定由一组对象中某个对象处理该请求

3. 若系统中的某子模块需要为其它模块提供访问不同数据库系统(Oracle、SQL Server、DB2 UDB 等)的功能, ( B )设计模式可抽象出相同的数据库访问过程;B. 装饰

4. 系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),但希望最多只增加三个类,( B )设计模式可以实现该目的。B. 装饰

5. 下面的类图表示的是哪个模式{AbstractFactory}( A ) A. 抽象工厂模式

6. 下面的类图表示的是哪个设计模式{Subject}( D ) D. 观察者模式(Observer) 7. 下面的类图表示的是哪个模式{Fa?ade}( B ) B. 外观模式(Facade)

8. 下面的类图表明了哪个模式{Product}( D ) D. 工厂方法模式(Factory Method) 9. 下面的类图表示的是哪个设计模式{Context}( D ) D. 状态模式(State) 10. 下面的类图表明了哪个模式{Singleton}( C ) C. 单例模式(Singleton) 二、 填空题(分值20)

1.(工厂方法)模式中,父类负责定义创建对象的公共接口,子类则负责生 成具体的对象。

2.(抽象工厂)模式提供一系列相关或相互依赖对象的接口而无需指定它们具体的类。

3(原型)模式用原型实例指定创建对象的种类,并且通过拷贝这些原型实例创建新的对象。 4.(单例)模式确保某一个类仅有一个实例,并自行实例化并向整个系统提供这个实例。

5. (组合)模式将对象组合成树形结构以表示“部分-整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。

6. (外观)模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面。

7. (享元)模式运用共享技术有效地支持大量细粒度的对象。

8. (责任链)模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。

9. (观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。

10. (模板方法)模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 三、简答题(分值30)

关于设计模式,请回答:

1、 什么是设计模式?设计模式的目标是什么?

(1)、设计模式是一套被反复使用,多数人知晓的,经过分类编写的代码设计经验的总结。 (2)、目标:为了可重用代码,让代码更容易被他人理解,保证代码可靠性。 2、 设计模式具有哪三大特点?

(1)、可重用性,对相同类型问题反复出现,尽管问题的环境有不同,但解决方案有效。 (2)、可传授性,问题反复出现,解决问题的方案相同,大家都接受该解决方案。。 (3)、名称,每个设计模式都有名称。

3、 GOF 设计模式常用的有几种?GOF 设计模式按照模式的目的可分为哪三类?

(1)23中;(2)、结构型,将现存的对象结合在一起。 行为性,提供一种显得灵活变化的行为。 创建型,穿件或实例化对象

1、简述面向对象程序设计的六大基本原则?

答:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则。 2 、简述什么是单例模式,以及他解决的问题,应用的环境,解决的方案,模式的本质?

答;在任何时间内只有一个类实例存在的模式。需要有一个从中进行全局访问和维护某种类型数据的区域的环境下使用单例模式。解决这个问题的办法是为指示类是否已经实例化的变量提供一个互斥锁。解决方案就是保证一个类只有一个类实例存在。本质就是实例共用同一块内存区域。 3、为什么面向对象的分析和设计中优先使用组合,而非继承?

答: 继承关系有很多缺点,如果合理使用组合则可以有效的避免这些缺点,使用组合关系将系统对变化的适应力从静态提升到动态,而且由于组合将已有对象组合到了新对象中,因此新对象可以调用已有对象的功能。由于组合关系中各个对象的内部实现是隐藏的,我们只能通过接口调用,因此我们完全可以在运行期用实现了同样接口的另外一个对象来代替原对象,从而灵活实现运行期的行为控制。而且使用合成关系有助于保持每个类的职责的单一性,这样类的层次体系以及类的规模都不太可能增长为不可控制的庞然大物。

在下面的C++代码中,类SalesTicket能够完成打印票据正文的功能,阐述采用该设计模式

该代码采用装饰(Decorator)设计模式实现。采用该设计模式的目的能够动态地给一个对象增加一些新的职责不不需要采用生成子类的方法。可以让客户选择给该类对象附加新的功能的时机以及是否增加新职责。比生成子类的方法更为灵活。

主任可以审批1 万元以下的采购单,副董事长可以申批2.5 万元以下的采购单,董事长可以审批10万元以下的采购单,10 万元以上的采购单就需要开会决定。选择设计模式并其类图。 责任链模式:

一、

1. 以动作和事务闻名,且以对象形式用来封:B.命令模式 2. 以下不属于创建型模式是 ( A ) PROXY(代理) 3. 以下不属于结构型模式是 ( D ) D. SINGLETON(单例) 4、以下不属于行为型模式是( D ) MEMENTO(备忘录) 5、以下意图那个是用来描述BUILDER(生成器)( B ) 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

6、以下意图那个是用来描述PROTOTYPE(原型)( D )D. 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

7、以下意图那个是用来描述ADAPTER(适配器)( A )将一个类的接口转换成客户希望的另外一个接口。本模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 8. 以下意图那个是用来描述BRIDGE(桥接)( B )B. 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 9. 以下哪个意图是用来描述COMPOSITE(组合)?( C ) 将对象组合成树形结构以表示部分-整体的层次结构。 10、以下那个是用来描述DECORATOR(装饰)( D ) 动态地给一个对象添加一些额外的职责。

11、以下意图那个是用来描述 FACADE(外观)?( A ) 为子系统中的一组接口提供一个一致的界面,本模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

12、以下意图那个是用来描述FLYWEIGHT(享元)( B )B. 运用共享技术有效地支持大量细粒度的对象。 13、以下意图那个是用来描述 PROXY(代理)( C )C. 为其他对象提供一种代理以控制对这个对象的访问。 14、以下意图那个是用来描述CHAIN OF RESPONSIBILITY(职责链)?( D )D.使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。

15、以下意图那个是用来描述 COMMAND(命令)( A )A、将一个请求封装为一个对象;对请求排队或记录请求日志,以及支持可撤消的操作

1. (命令)模式把一个请求或操作封装到一个对象中。

2. (装饰)模式封装一些施加于某种数据结构元素之上的操作,这样修改操作不影响数据结构。 3. (外观)模式为子系统对外提供的一组接口提供一个统一的界面。

4. (策略)模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使算法可相互替换。 5. (观察者)模式让多个对象同时监听某一个主题对象,主题对象的变化会通知监听对象,使得监听对象可以自

动更新。

6. (适配器)模式把一个类的接口变换成客户端所期待的另一种接口。 7. (访问者)模式以对客户端透明方式扩展对象的功能。

8. (简单工厂)模式定义一个具体的工厂类来负责创建一些类的实例,而这些被创建的类应有一个共同的父类。 9. (工厂方法)模式定义一个用于创建对象的接口,让子类决定实例化哪一个类,从而使一个类实例化延迟到其

子类。

10. (抽象工厂类)模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 四、问答题(分值30)

1、简述什么是工厂模式,以及他解决的问题,应用的环境,解决的方案,模式的本质?

定义一个用于创建对象的接口,让子类决定将哪一个类实例化;利用工厂来解决接口选择的问题的模式 ;应用环境:当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定 创建的对象时,就需要用到工厂模式; 解决方案:定义一个创建对象的接口,让子类来决定具体实例化哪一个类 ;本质就是根据不同的情况来选择不同的接口

2、什么是单一职责原则? 基本思想:SRP使得一个类或一个模块承担的责任尽可能少,是尽可能少的因素的因素或动机影响该类或该模块,即增大类或模块的内聚性,减少其耦合,SRP是所有原则中最简单的之一,也是最难正确运用之一 3、继承和组合各有什么优缺点? 组 合 关 系 优点:不破坏封装,整体类与局部类之间松耦合,继 承 关 系 缺点:破坏封装,子类与父类之间紧密耦合,子类依赖于父彼此相对独立 优点:具有较好的可扩展性 优点:支持动态组合。在运行时,整体对象可以选择不同类型的局部对象 优点:整体类可以对局部类进行包装,封装局部类的接口,提供新的接口 缺点:整体类不能自动获得和局部类同样的接口 缺点:创建整体类的对象时,需要创建所有局部类的对象 类的实现,子类缺乏独立性 缺点:支持扩展,但是往往以增加系统结构的复杂度为代价 缺点:不支持动态继承。在运行时,子类无法选择不同的父类 缺点:子类不能改变父类的接口 优点:子类能自动继承父类的接口 优点:创建子类的对象时,无须创建父类的对象

5、代理模式和中介者模式有什么不同?

1,中介者模式:A,B之间的对话通过C来传达。A,B可以互相不认识(减少了A和B对象间的耦合)

2,代理模式:A要送B礼物,A,B互相不认识,那么A可以找C来帮它实现送礼物的愿望(封装了A对象)

3,外观模式:A和B都要实现送花,送巧克力的方法,那么我可以通过一个抽象类C实现送花送巧克力的方法(A和B都继承C)。(封装了A,B子类)

代理模式和外观者模式这两种模式主要不同就是代理模式针对的是单个对象,而外观模式针对的是所有子类。

五、应用题(分值15)

为实现应用的界面与应用数据的分离,一个表格对象和一个柱状图对象可使用不同的表示形式描述同一个应用数据对象的信息。请根据叙述述,选择设计模式,并给出设计模式的类图。 观察者模式