设计模式复习资料二docWord格式文档下载.docx
- 文档编号:3440259
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:18
- 大小:26.71KB
设计模式复习资料二docWord格式文档下载.docx
《设计模式复习资料二docWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《设计模式复习资料二docWord格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。
21.命令模式将(发出请求)的对象和(执行请求)的对象解耦。
22.当需要一个现有的类而其接口不符合需求时,可使用(适配器)模式。
23.适配器模式的两种模式是(对象适配器)和(类适配器)。
24.(模板方法)定义了算法的步骤,把这些步骤的实现延迟到了子类。
25.(代理模式)为另一个对象提供代表,以便控制客户对对象的访问。
26.装饰着模式为对象加上(行为)而代理模式则是(控制访问)。
27.开闭原则:
(扩展开放)(修改关闭)。
28.代理模式分为哪4种:
(虚拟代理)(远程代理)(安全代理)(聪明引用)。
选择题
2.若系统中的某子模块需要为其它模块提供访问不同数据库系统(Oracle、SQLServer.DB2UDB等)的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,再打开数据库,最后对数据进行查询,(:
D)设计模式可抽象出相同的数据库访问过程;
A.外观B.装饰C.单件D.模板方法
3.系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条、或者带有黑色边框、或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加三个类,(B)设计模式可以实现该目的。
A,外观B.装饰C.单件D.模板方法
4.下面的类图表示的是哪个模式?
(A)
A、抽象工厂模式(AbstractFactory)
B、工厂方法模式(FactoryMethod)
C、命令模式(Command)
D、责任链模式(ChainofResponsibility)
5.下面的类图表示的是哪个设计模式?
(B)
A、代理模式(Proxy)B、装饰模式(Decorator)
C、桥接模式(Bridge)D、观察者模式(Observer)
6.下面的类图表示的是哪个模式?
A、代理模式(Proxy)B、外观模式(Facade)
C、适配器模式(Adapter)D、桥接模式(Bridge)
7、下面的类图表明了哪个模式?
(D)
A、责任链模式(ChainofResponsibility)B、命令模式(Command)
C、备忘录模式(Memento)D、工厂方法模式(FactoryMethod)
8、下面的类图表示的是哪个设计模式?
A、模板方法模式(TemplateMethod)B、命令模式(Command)
C、单例模式(Singleton)D、状态模式(State)
9、下面的类图表示的是哪个设计模式?
(C)
10、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(A)模式。
A.创建型B.结构型C行为型D.以上都可以
11、设计模式的两大主题是(d)
A.系统的维护与开发B对象组合与类的继承
C.系统架构与系统开发D.系统复用与系统扩展
12、单例模式中,两个基本要点(ab)和单子类自己提供单例
A.构造函数私有B.唯一实例
C.静态工厂方法D.以上都不对
13、下列模式中,属于行为模式的是(b)
A.工厂模式B观察者C适配器以上都是
14、对象适配器模式是(a)原则的典型应用。
A.合成聚合复用原则B.里式代换原则
C.依赖倒转原则D.迪米特法则
15、静态工厂的核心角色是(a)
A.抽象产品B.具体产品C.静态工厂D.消费者
16、在观察者模式中,表述错误的是(c)
A.观察者角色的更新是被动的。
B.被观察者可以通知观察者进行更新
C.观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。
D.以上表述全部错误。
17、以下关于创建型模式说法正确的是。
(A)
A,创建型模式关注的是对象的创建
B.创建型模式关注的是功能的实现
C.创建型模式关注的是组织类和对象的常用方法
D.创建型模式关注的是对象间的协作
18.常用的描述设计模式的格式有(ABCD)o
A.意图B.动机
C.适用性D.结构
19.以下关于结构型模式说法正确的是(ACD)O
A.结构型模式可以在不破坏类封装性的基础上,实现新的功能。
B.结构型模式主要用于创建一组对象。
C.结构型模式可以创建一组类的统一访问接口
D.结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。
20.以下属于结构型模式的是(AB)O
A.代理(Proxy)模式B.合成(Composite)模式
C.命令(Command)模式D.观察者(Observer)模式
21.在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。
主要体现在(AD)o
A.适配器(Adapte)模式B.合成(Composite)模式
C.原型(Prototype)模式D.桥接(Bridge)模式
22.结构型模式中最体现扩展性的几种模式是(BC)o
C.装饰(Decorator)模式D.桥接(Bridge)模式
23.行为类模式使用(B)在类间分派行为。
A.接口B.继承机制
C.对象组合D.委托
24.以下属于行为对象模式的是(BCD)0
A.模板(TemplateMethod)模式B.迭代器(Iterator)模式
25.封装分布于多个类之间的行为的模式是(C)。
A.观察者(Observer)模式B.迭代器(Iterator)模式
C.访问者(Visitor)模式D.策略(Strategy)模式
26.利用继承来提供DUCK的行为,会导致下列那些缺点?
(ABCD)
A.代码在多个子类中重复B.运行时的行为不容易改变
C.我们不能让鸭子跳舞D.改变会牵一发而动全身,造成其他鸭子不想要的改变
简答题:
1.什么是设计模式?
设计模式的目标是什么?
答:
设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用巳有的软件开发经验。
2.设计模式具有哪三大特点?
(1)在特定的场景下有可重用性,对相同类型不同问题的环境,其解决方案都有效。
(2)可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受。
(3)有表示模式的名称。
3.GOF设计模式常用的有几种?
GOF设计模式按照模式的目的可
分为哪三类?
行为型,结构型,创建型
4.画出抽象工厂方法类图(这类题自己看书去。
)
5.针对接口编程,不针对实现编程的意义。
主题与观察者都是用接口:
观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。
这样可以让两者之间运作正常,又同时具有松耦合的优点。
6.面向对象(00)的原则有:
1.封装变化
2.多用组合,少用继承
3.针对接口编程,不针对实现编程
4.为交互对象之间的松耦合设计而努力
5.对扩展开放,对修改关闭
6.依赖抽象,不要依赖具体类
7.只和朋友交谈
8.别找我,我会找你
9.类应该只有一个改变的理由
7.耦合分为几种?
(1)内容耦合
(2)公共耦合(3)外部耦合(4)控制耦合
(5)标记耦合(6)数据耦合(7)非直接耦合
8.G0F模式分为几种,每种包含哪些模式?
分为3种。
创建型设计模式:
简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式;
结构型设计模式:
适配器模式,桥接模式,组合模式,装饰模式,外观模式,轻量级模式,代理模式;
行为性设计模式:
责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略者模式,模板方法模式,访问者模式。
综合题
1.某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实
世界中各种鸭子的发声特征、飞行特征和外观特征。
游戏需要模拟的鸭子
种类及其特征如下表所示:
为支持将来能够模拟更多种类鸭子的特征,采用某设计模式设计的类图如下所示:
其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、MallardDuck>
CottonDuck和RedHeadDuck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;
类FlyBehavior与QuackBehavior为抽象类,分别用于表示抽象的飞行行为与发声行为;
类FlyNoWay与FlyWithWings分别描述不能飞行的行为和用翅膀飞行的行为;
类Quack、Squeak与QuackNoWay分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。
[C++代码]
#include<
iostream>
usingnamespacestd;
classFlyBehavior{
public:
virtualvoidfly()=0;
};
classQuackBehavior(
public:
virtualvoidquack()=0;
classFlyWithWings:
publicFlyBehavior{public:
voidfly()(cout<
v”使用翅膀飞行!
"
«
endl;
}
);
classFlyNoWay:
publicFlyBehavior{
voidfly()(cout«
”不能飞行!
);
classQuack:
publicQuackBehavior{
voidquack(){cout«
发出'
'
嘎嘎'
声!
vvendl;
classSqueak:
发出空气与橡皮摩擦声1"
classQuackNoWay:
voidquack(){cout«
不能发声!
)
classDuck{
protected:
FlyBehavior*flyBehavior;
QuackBehavior*quackBehavior;
voidfly()(flyBehavior->
fly();
voidquack(){quackBehavior->
quack();
};
virtualvoiddisplay()=0;
classRubberDuck:
publicDuck{
RubberDuck(){flyBehavior=newFlyNoWay();
quackBehavior=newSqueak();
~RubberDuck(){
if(iflyBehavior)deleteflyBehavior;
if(iquackBehavior)deletequackBehavior;
voiddisplay(){/*此处省略显示橡皮鸭的代码*/)
〃其它代码省略
请根据上述类图和代码,阐述采用该设计模式进行设计的优势?
18.写一个单例模式的程序:
staticInstanceist=null;
publicstaticSingletongetlnstance()
(
if(instance==null)
synchoronized(Singleton.class){
if
(instance==null)
instance=newSingleton();
returninstance;
19.写一个观察者模式的程序:
publicinterfaceAlarmListener{//定义观察者接口
publicvoidalarm();
publicvoidsoundTheAlarm(){
System.out.println(
“传感器检测到有人入侵”)
classLightingimplementsAlarmListener{
publicvoidalarm(){
System.out.println((,自动开灯”);
)classGatesimplemets
AlarmListener{
System.out.printlnC,自动关门)}
1.简述“开一闭”原则的基本思想。
请举出一个使用了软件“开一闭”原则的软件设计模式,其中何处体现了“开一闭”原则。
“开一闭”原则:
软件实体应当对扩展开放,而对修改关闭,“开-闭”原则要求软件系统能够在不需要修改原有类的基础上,通过增加类达到扩展功能的目的。
Abstractfactory体现了这个原则,如果想增加一类新的products,只需在product类体系中增加各个products,然后在factory类体系结构中增加一个concretefactory就可以了,而不需要对现有类做任何修改,TheOpen-closedprinciple[ocp]在不改动过模块源代码的情况下扩展模块的行为。
软件实体(类模块函数等)应该是可以扩展的,但是不可以修改的。
2.简述依赖例转原则的基本思想。
请举出一个使用了软件依赖原则的软件设计模式,其中何处体现了依赖原则。
依赖倒置原则的基本思想是:
①高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
②抽象不应该依赖于细节,细节应该不依赖于抽象。
Tomplatemethod就体现了这个原则,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,templatemethod使得子类不改变一个算法的结构,即可重定义该算法的某些特定步骤。
3.什么是单一职责原则?
请举出一个使用了单一职责原则的软件设计模式,其中何处体现了单一职责原则。
基本思想:
SRP使得一个类或一个模块承担的责任尽可能的少,使尽可能少的因素或动机影响该类或该模块,即增大类或模块的内聚性,减少其耦合度,SRP是所有原则中最简单的之一,也是最难正确运用的之一。
COMMAND模式体现了SRP原则,大多数类都是一组方法和相应的一组变量的结合,而该模式只是封装了一个没有任何变量的函数,它对函数的关注超过了类,将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化。
4.软件复用可采用类的继承方式和类的聚合方式,比较两者的优缺点。
聚合:
一个对象拥有另一个对象或对另一个对象负责(即一个对象包含另一个对象或是另一个对象的一部分)并且聚合对象和其所有具有相同的生命周期(即所谓的"
同生共死”关系)。
聚合复用优点:
①容器类仅能通过被包含对象的接口来对其进行访问。
②“黑盒”复用,因为被包含对象的内部细节对外是不可见。
③包装性好。
④实现上的相互依赖性比较小。
⑤每一个类只专注于一项任务。
⑥通过获取指定其他的具有相同类型的对象的使用,可以在运行期间动态地定义(对象的)组合。
聚合的缺点:
①导致系统中的对象过多②为了能将多个不同的对象作为组合块来使用,必须仔细地对接口进行定义。
类继承:
是一种通过扩展(一个己有对象的)实现,从而获得新功能的复用方法。
继承的优点:
①容易进行新的实现,因为其大多数可继承而来②易于修改或扩展那些被复用的实现。
继承的缺点:
①破坏了封装性,因为这会将父类的实现细节暴露给子类②“白盒”复用,因为父类的内部细节对于子类而言通常是可见的③当父类的实现更改时,子类也不得不随之更改④从父类继承来的实现将不能在运行期间进行改变。
5.画出工厂方法模式的结构图。
什么情况下适合使用工厂方发模式?
其中product:
为工厂模式所要创建的对象类型定义一个接口。
Concreteproduct:
实现product接口。
Creator:
声明工厂方法(factorymethod)返回值为product的一个对象。
Concretecreator:
覆写factoryMethod(),返回值为concreteproduct的一个具体实例。
在下面情况下你可以考虑使用工厂方法模式:
1)当客户程序不需要知道要使用对象的创建过程。
2)客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。
6.画出合成模式(Composite)的结构图。
举例说明一个可以应用合成模式的软件设计实例,说明其中各角色的作用。
实例:
计算机和立体组合音响这样的设备经常被组装成一部分整体层次结构或者是容器层次结构,例如:
底盘可以包含驱动装置和平面板,总线含有多个插件,机柜包括底盘、总线等。
这样结构很自然的用composite模式进行模拟。
Equipment类为在部分整体层次结构中的所有设备定义一个接口。
Equipment声明一些操作返回一个设备的属性,例如它的能是消耗和价格。
子类为指定的设备实现了这些操作,Equipment还声明了一个CreateIterator操作,该操作为访问它的零件返回一个Iterator,&
个操作的缺省实现返回一上Nulllterator,它在空集上迭代。
CompositeEquipment是包含其它设备的基类,它也是Equipment的子类。
7.简述门面模式(Facade)和中介者模式(Mediator)的基本思想,两者的差异何在?
门面模式(facade)又称外观模式。
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
“中介者模式”基本思想:
MediatorPattern中文译为“中介者模式”、“调停者模式”。
调停者模式的定义是:
用一个调停对象来封装一系列的对象交互。
调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“调停”对象,使得两头的对象分别和
“调停”对象引用或者依赖。
两者的差异:
从目的上看,调停者模式与门面模式有些相似。
但是门面模式是介于客户程序与子系统之间的,而调停者模式是介于子系统与子系统之间的。
这也注定了它们有很大的区别:
门面模式是将原有的复杂逻辑提取到一个统一的接口,简化客户对逻辑的使用。
它是被客户所感知的,而原有的复杂逻辑则被隐藏了起来。
而调停者模式的加入并没有改变客户原有的使用习惯,它是隐藏在原有逻辑后面的,使得代码逻辑更加清晰可用。
8.简述观察者模式的基本思想,如何实现当目标对象发生变化时多个观察者对象的同步更新?
画出他们之间的协作图。
(1)Observer(观察者)基本思想:
对象间的一种一对多的依赖关系。
当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动更新。
(2)协作:
当ConcreteSubject发生任何可能导到其参观者与其本身状态不一致的改变时,它将通知它的各个观察者。
在得到一个具体的目标改变通知后,ConcreteObject对象可向目标对象查询信息,ConcreteObject使用这个些信息以使它的状态与目标对象的状态一致。
(3)协作图:
9.举一适合使用State模式的例子。
与不使用该模式相比,有哪些优点?
举例:
抽象状态类定义了一个抽象方法“写程序”
与不使用该模式相比优点:
State模式将特定的状态相关的行为封装在一个类中,由于所有状态相关的代码都存在于某个concretestate中,所以通过定义新的子类可以很容易的增加新的状态和转换。
10.有哪些模式的使用可以使得类的复用性增强?
说明你的理由。
策略模式(strategy)属于对象行为型模式,主要定义一系列的算法,把这些算法一个
个封装成拥有共同接口的单独的类,并使他们之间互换,客户端调用他们的时候互不影响。
算法使用和算法分离,即将变化的具体算法封装起来,降低了代码的耦合度,算法提取起来,使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 复习资料 doc
![提示](https://static.bingdoc.com/images/bang_tan.gif)