软件设计模式练习题.docx
《软件设计模式练习题.docx》由会员分享,可在线阅读,更多相关《软件设计模式练习题.docx(23页珍藏版)》请在冰豆网上搜索。
![软件设计模式练习题.docx](https://file1.bdocx.com/fileroot1/2023-2/9/55cd0a48-040e-4fed-ba95-7aa6836c063a/55cd0a48-040e-4fed-ba95-7aa6836c063a1.gif)
软件设计模式练习题
一、选择题
1.(A)模式的关键是将一个对象定义为原型,并为其提供复制自己的方法。
A.原型B.创建者C.工厂方法D.迭代
2.下面的类图表示的是哪个设计模式?
(B)
A装饰模式(Decorator)B策略模式(Strategy)
C桥接模式(Bridge)D观察者模式(Observer)
3.Strategy(策略)模式的意图是:
(A)。
A.定义一系列的算法,把它们一个个的封装起来,并且使它们可相互替换。
B.为一个对象动态连接附加的职责。
C.你希望只拥有一个对象,但不用全局对象来控制对象的实例化。
D.在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新。
4.下面不属于创建型模式的有(C)。
A.抽象工厂模式(AbstractFactory)B.工厂方法模式(FactoryMethod)
C.适配器模式(Adapter)D.单例模式(Singleton)
5.将一个类的接口转换成客户希望的另一个接口。
这句话是对下列哪种模式的描述(C)。
A.策略模式(Strategies)B.桥接模式(Bridge)
C.适配器模式(Adapter)D.单例模式(Singleton)
6.下面的类图表示的是哪个设计模式?
(A)。
A装饰模式(Decorator)B适配器模式(Adapter)
C策略模式(Strategies)D桥接模式(Bridge)
7.下面属于结构模式的有(D)。
A.策略模式(Strategies)B.单例模式(Singleton)
C.抽象工厂模式(AbstractFactory)D.装饰模式(Decorator
8.下图可以使用(A)模式进行设计。
A.组合B.模板C.责任链D.状态
9.(B)将抽象部分与它的实现部分分离,使它们都可以独立地变化。
A.组合B.桥接C.责任链D.状态
10.下图是关于房间状态的描述,可以使用(D)模式进行设计。
A.组合B.桥接C.责任链D.状态
11.设计模式具有的优点(A)。
A.适应需求变化B.程序易于理解
C.减少开发过程中的代码开发工作量 D.简化软件系统的设计
12. 设计模式一般用来解决什么样的问题( A)。
A.同一问题的不同表相B不同问题的同一表相
C.不同问题的不同表相D.以上都不是
13. 设计模式的两大主题是(D)。
A.系统的维护与开发 B.对象组合与类的继承
C.系统架构与系统开发 D.系统复用与系统扩展
14.以下哪些问题通过应用设计模式不能够解决(C)
A)指定对象的接口 B)针对接口编程
C)确定软件的功能都正确实现 D)设计应支持变化
15.打印池在操作系统中是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级。
我们可以使用(D)来模拟实现打印池的设计。
A.命令模式B.桥接C.责任链D.单例模式
16.在现实生活中,居民身份证号码具有唯一性,居民可以申请身份证号码或补办身份证号码(还是使用原来的身份证号码,不会产生新的号码)。
我们可以使用(C)来模拟实现居民身份证号码办理。
A.命令模式B.桥接C.单例模式D.责任链
17.在银行办理业务时,一般都包含几个基本步骤,即取号排队、办理具体业务和对银行工作人员进行评分。
无论具体业务是取款、存款还是转账,其基本流程都一样。
可以使用(C)模拟银行业务办理流程。
A.工厂方法模式B.访问者模式C.模板方法模式D.责任链
18.对数据库的操作一般包括连接、打开、使用、关闭等步骤,对于不同类型的数据库,其操作步骤都一致,只是连接数据库方法有所区别,可以使用(C)对其进行设计。
A.工厂方法模式B.访问者模式C.模板方法模式D.责任链
19.论坛权限控制设计:
在一个论坛中已注册用户和游客的权限不同,已注册的用户拥有发帖、修改自己的注册信息、修改自己的帖子等功能;而游客只能看到别人发的帖子,没有其他权限。
使用(B)来设计该权限管理模块。
A.工厂方法模式B.代理模式C.享元模式D.外观模式
20.在模拟毛笔的使用过程中提供了大中小3种型号的画笔,够绘制5种不同颜色。
我们可以使用(B)来模拟实现模拟毛笔的使用。
A.命令模式B.桥接C.单例模式D.责任链
21.共享网络设备模拟:
很多网络设备都是支持共享的,如交换机、集线器等,多台终端计算机可以连接同一台网络设备,并通过该网络设备进行数据转发。
共享网络设备可以使用(C)模拟共享网络设备的设计原理。
A.工厂方法模式B.代理模式C.享元模式D.外观模式
22.购物车设计:
顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。
在购物过程中,顾客需要对这些商品进行访问,以便确认这些商品的质量,之后收银员计算价格时也需要访问购物车内顾客所选择的商品。
购物车设计可以使用(B)来设计该购物过程。
A.工厂方法模式B.访问者模式C.模板方法模式D.责任链
23.某高校奖励审批系统可以实现教师奖励和学生奖励的审批(AwardCheck),如果教师发表论文数超过10篇或者学生论文超过2篇可以评选科研奖,如果教师教学反馈分大于等于90分或者学生平均成绩大于等于90分可以评选成绩优秀奖。
奖励审批系统可以使用(B)设计该系统,以判断候选人集合中的教师或学生是否符合某种获奖要求。
A.工厂方法模式B.访问者模式C.模板方法模式D.责任链
24.现在大多数软件都有撤销(Undo)的功能,快捷键一般都是Ctrl+Z。
这些软件可能使用了(A)模式来进行。
A.备忘录模式B.访问者模式C.模板方法模式D.责任链
25.某系统提供了用户信息操作模块,用户可以修改自己的各项信息。
为了使操作过程更加人性化,可以使用(B)对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。
A.责任链B.备忘录模式C.模板方法模式D.访问者模式
26.假设猫是老鼠和狗的观察目标,老鼠和狗是观察者,猫叫老鼠跑,狗也跟着叫,可以使用(B)描述该过程。
A.命令模式B.观察者模式C.责任链D.单例模式
27.通过电视机遥控器可以实现对电视机频道进行选择,其实选择电视机频道就是对存放频道的集合进行遍历操作。
所以可以使用(C)模拟电视机遥控器的实现。
A.命令模式B.观察者模式C.迭代器模式D.单例模式
28.假设一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。
通过该电源总开关可以同时控制上述所有电器设备,可以使用(A)来模拟设计该系统。
A.外观模式B.观察者模式C.迭代器模式D.单例模式
29.KFC套餐一般包含主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐等)等组成部分,不同的套餐有不同的组成部分,而KFC的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐,然后返回给顾客。
可以使用(D)描述KFC如何创建套餐。
A.外观模式B.观察者模式C.迭代器模式D.建造者模式
30.某OA系统需要提供一个假条审批的模块,如果员工请假天数小于3天,主任可以审批该假条;如果员工请假天数大于等于3天,小于10天,经理可以审批;如果员工请假天数大于等于10天,小于30天,总经理可以审批;如果超过30天,总经理也不能审批,提示相应的拒绝信息。
如果假条审批使用模式来进行设计,可以使用(A)模式。
A.责任链B.备忘录模式C.模板方法模式D.访问者模式
31.以下关于创建型模式说法正确的是(A)
A.创建型模式关注的是对象创建B.创建型模式关注的是功能的实现C.创建型模式关注的是组织类和对象的常用方法D.创建型模式关注的是对象间的协作。
32.下列关于简单工厂模式与工厂方法模式表述错误的是(A)
A.两者都满足开闭原则:
简单工厂以ifelse方式创建对象,增加需求看看时候会修改源代码B.简单工厂对具体产品的创建类别和创建时机的判断是混合在一起的,这点在工厂方法模式中已经克服C.不能形成简单工厂的继承结构D.在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的。
33.简单工厂模式的核心是(C)
A.抽象产品B.具体产品C.简单工厂D.消费者
34.工厂方法模式的核心是(A)
A.一个抽象工厂B.一个具体工厂C.一个接口D.没有核心
35.在设计中如果一个对象请求另一个对象调用其方法到达某种目的,而不和请求的对象直接打交道,这种模式是(B)。
A.观察者模式B.命令模式C.策略模式D.责任链模式
36.(A)关于多个对象想知道一个对象中数据变化情况的一种成熟的模式。
A.观察者模式B.命令模式C.策略模式D.责任链模式
37.Open-Close原则的含义是一个软件实体(a)
A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭
C.应当对继承开放,对修改关闭 D.以上都不对
38.下列模式中,属于行为模式的是(B)
A.工厂模式 B观察者 C适配器 D.以上都是
39.下列图1可对应(D)模式来进行设计。
图1
A.抽象工厂 B观察者 C适配器 D.装饰
40.如下列图2所示,在设计模式中,这种设计可采用(B)。
图2
A.命令模式 B策略模式 C.外观模式 D.迭代器模式
41.策略模式的结构中包括三种角色上下文、具体策略和抽象策略。
抽象策略角色是一个(C)。
A.类 B抽象类 C.接口 D.子类
42.用户已经有睛个两相插座,最的又买了一个三相插座。
现在用户想使用新的三相插座来使用三相的洗衣机和二相插座的电视机,这种问题可以使用(B)模式来进行设计。
A.命令模式 B适配器模式 C.外观模式 D.迭代器模式
43.如下列图3所示,在设计模式中,这种设计可采用(A)。
图3
A.命令模式 B策略模式 C.外观模式 D.迭代器模式
44.如下列图4所示,在设计模式中,这种设计可采用(C)。
图4
A.命令模式 B策略模式 C.适配器模式 D.组合模式
45.如下列图5所示,在设计模式中,这种设计可采用(A)。
图5
A.职责链模式 B策略模式 C.适配器模式 D.组合模式
46.如下列图6所示,在设计模式中,这种设计可采用(B)。
图6
A.职责链模式 B原型模式 C.适配器模式 D.组合模式
47.如下列图7所示,在设计模式中,这种设计可采用(A)。
图7
A.工厂方法模式 B原型模式 C.适配器模式 D.组合模式
48.如下列图8所示,在设计模式中,这种设计可采用(B)。
图8
A.工厂方法模式 B抽象工厂模式 C.适配器模式 D.组合模式
49.如下列图9所示,在设计模式中,这种设计可采用(A)。
图9
A.建造者模式 B抽象工厂模式 C.适配器模式 D.组合模式
50.如下列图10所示,在设计模式中,这种设计可采用(B)。
图10
A.建造者模式 B单例模式 C.适配器模式 D.组合模式
51.如下列图11所示,在设计模式中,这种设计可采用(C)。
图11
A.建造者模式 B单例模式 C.代理模式 D.组合模式
52.如下列图12所示,在设计模式中,这种设计可采用(B)。
图12
A.建造者模式 B观察者模式 C.代理模式 D.组合模式
53.下列模式中,属于行为模式的是(B)。
A.工厂模式B.观察者模式C.适配器模式D.以上都是
54.行为类模式使用(B)在类间分派行为。
A.接口B.继承机制C.对象组合D.委托
55.原型模式本质上就是对象的(B)。
A.引用B.复制C.串行化D.序列化
56.以下哪个模式可以利用一个对象,快速地生成一批对象?
(C)
A.抽象工厂模式B.单例模式C原型模式.D.简单工厂模式
二、填空题
1.Strategy意图是定义一系列的算法,把它们一个个(封装)起来,并且使它们可相互替换。
2.(Strategy模式)模式是一种定义一系列算法的方法。
3.Adapter模式有两种类型有:
对象Adapter模式、(类Adapter模式)。
4.(Adapter适配器)模式使原本接口不兼容而不能一起工作的类可以一起工作。
5.组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。
6.桥接模式包括抽象类、扩充抽象类、实现类接口和(具体实现类)四个角色。
7.状态模式的关键是引入了一个(抽象类)来专门表示对象的状态,这个类我们叫做抽象状态类,
8.享元模式的核心在于(享元工厂类)。
9.包括原发器、备忘录和负责人三个角色的模式是(备忘录模式)
10.(解释器)模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。
11.GOF总结出了(23)个模式。
12.GOF根据模式的目标将模式分为三个类目:
创建型、(行为型)和结构型。
13.GOF总结出23个设计模式,其中有(7)个模式是结构型模式。
14.开闭原则中(抽象化)是开闭原则的关键。
15.合成复用原则是指尽量使用对象组合,而不是(继承)来达到复用的目的。
16.面向对象的设计模式的原则是指“开-闭”原则、里氏代换原则和(合成复用原则)。
18.根据范围即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为(类模式)和(对象模式)两种。
19.对象模式处理对象间的关系,这些关系在运行时刻变化,更具动态性。
20.类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。
21.()模式提供了管理相关的算法族的办法。
策略
22.策略模式还简化了单元测试,因为第个算法都有自己的类,可以通过自己的()单独测试。
接口
23.策略模式将算法的选择和算法的()相分离。
实现
24.()模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
责任链
25.行为模式是对在不同的对象之间划分()和()抽象化。
责任算法
26.中介者模式又被称为()模式。
调停者
27.中介者模式是一种()模式。
对象行为
28.组合模式有时又称为()模式。
部分-整体
29.软件模式的基本结构由4个部分组成,即问题描述、前提条件、()和效果。
解法
30.设计模式一般包含模式名称、问题、目的、解决方案、效果、实例代码和()。
相关设计模式
31.设计模式根据设计目的分为创建型模式、结构型模式和()。
行为型模式
33.GOF设计模式总共提供了()种设计模式。
23
34.单一职责原则用于控制类的()大小。
粒度
35.开闭原则是指软件实体应当对()开放,对修改关闭。
扩展
36.()模式让一个类的实例化延迟到其子类。
工厂方法
37.抽象工厂模式是一种()创建型模式。
对象
38.()模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。
抽象工厂
39.原型模式的结构中包含抽象原型类和()。
具体原型类
40.确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例的设计模式是()模式。
单例
41.装饰模式是属性于()模式。
结构型
42.将抽象部分和它的实现部分解耦,使得两者都能够独立变化的设计模式是()模式。
桥接
43.()模式让客户端可以统一对待单个对象和组合对象。
组合
44.组合模式根据抽象构件类的定义形式可以分为透明组合模式和()组合模式。
安全
45.()模式可以动态地给一个对象增加一些额外的职责。
装饰
46.装饰模式又分透明装饰模式和()装饰模式。
半透明
47.享元模式是运用()技术有效地支持大量细粒度对象的复用。
共享
三、判断题
1.Strategy模式使得算法可独立于使用它的客户而变化。
对
2.从Strategy模式的概念上来说,所有算法都做相同的工作,且拥有相同的实现。
错
3.对象适配器模式是合成聚合复用原则的典型应用。
对
4.Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
对
每个Decorator对象在被装饰的功能之前或之后执行自己的附加功能。
对
6.Decorator(装饰)模式适用性是表示对象的部分-整体层次结构。
错
7.组合模式又可以称为“整体-部分”(Part-Whole)模式(对)
8.桥接模式是一种对象结构型模式。
(对)
9.状态模式是一种对象行为型模式。
(对)
10.模板方法模式是一种类行为型模式。
(对)
11.访问者模式是一种对象行为型模式。
(对)
12.单例模式是属于创建型模式。
(错)
13.行为模式涉及怎样合理地设计对象之间的交互通信,以及怎样合理为对象分配职责。
(对)
14.单一职责原则是指一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。
(对)
15.开闭原则是指一个软件实体应当对扩展开放,对修改关闭。
(对)
16.在面向对象设计中,可以通过两种基本方法在不同的环境中复用已有的设计和实现,即通过组合/聚合关系或通过继承。
(对)
17.单一职责原则要求在软件系统中,一个类只负责一个功能领域中的相应职责。
(对)
18.创建型模式主要用于创建对象。
(对)
19.结构型模式主要用于处理类或对象的组合。
(对)
21.策略模式使得算法可独立于使用它的客户而变化。
22.从策略模式的概念上来说,所有算法都做相同的工作,且拥有相同的实现。
X
23.策略模式可以用不同的方式调用所有的算法。
X
24.在算法设计时,采用策略模式可能会增加大量的类。
25.策略模式是一种对象行为模型式。
26.中介者模式是一种对象行为型模式。
27.中介者模式设计符合单一职责原则。
28.中介者模式中的中介其实仅提供一个交互的平台,具体的交互还是对象之间来完成的。
29.QQ一对聊天可以看作中介者模式的一个示例。
X
30.中介者模式定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其31.相关依赖对象皆得到通知并被自动更新。
X
32.在中介者模式中,”中介”承担了较多的责任,所以一旦这个中介对象出现了问题,那么整个系统就会受到重大影响。
33.抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建。
34.抽象工厂模式针对的是一个产品等级结构、一个抽象产品类。
X
35.可以这样理解“抽象工厂”模式:
抽象来自抽象产品角色,而抽象工厂就是抽象产品角色的工厂。
36.抽象工厂模式提供了一系列相关或相互依赖对象的接口且必须指定其具体的类。
X
37.抽象工厂模式确保系统总能根据当前的情况获得合适的对象。
38.工厂方法模式关注对象的实例化过程,所以是一种行为模式。
X
39.工厂方法模式只有一个抽象产品类。
40.工厂方法模式的具体工厂类可以创建多个具体产品类的实现。
X
41.简单工厂模式完全符合“开闭原则”。
X
42.简单工厂模式属于创建型模式,但不属于23种GOF设计模式之一。
43.建造者模式中,每一个builder都相对独立,而与其他的builder无关。
44.在建造者模式中,指挥者的角色可有可无。
X
45.建造者模式属于对象创建型模式。
46.建造者模式和工厂模式一样,关注的都是如何创建单个产品。
X
47.建造者模式要求构建产品的步骤是不能剧烈变化的,最好是不变的,这样就影响了灵活度。
48.单例模式和原型模式是冲突的。
49.与工厂方法模式一样,原型模式也需要专门的工厂类来创建产品。
X
50.对任何的对象x,都有x.clone()!
=x,即克隆对象与原对象不是同一个对象。
51.对任何的对象x,都有x.clone().getClass()==x.getClass(),即克隆对象与原对象的类型一样。
52.如果对象x的equals()方法定义恰当,那么x.clone().equals(x)应该成立。
53.单例模式适用于当类只能有一个实例,而且客户可以从一个公共的访问点访问它。
54.单例模式属于结构型模式。
X
55.在并发的情况下,懒汉式单例模式是不安全的。
56.可以把饿汉式单例模式看成是预加载,懒汉式单例模式则为延迟加载。
57.我们可以将一个方法标记为synchronized,这样多个线程变可以同时操作该方法了。
X
58.适配器模式属于创建型模式。
X
59.适配器模式的用意是改变对象的接口而不一定改变对象的性能,而装饰模式的用意是保持接口并增加对象的职责。
60.一个对象适配器可以将多个不同的适配者适配到同一个目标。
61.适配器模式也是一种包装模式,瑟装饰者模式同样具有包装的功能。
62.在系统并发的详细设计阶段最适合使用适配器模式。
X
63.在桥接模式中的桥接是单向的,也就是只能是抽象部分的对象云使用具体实现部分的对象,而不能反过来,也就是个单向桥。
64.桥接模式为系统提供了一种高内聚、低耦合的解决方案。
65.当需要增加系统的功能时,应当采用桥接模式。
X
66.封装就是指数据隐藏。
X
67.正确识别出系统中两个独立变化的维度并不是一件容易的事情。
68.组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以像处理简单元素来处理复杂元素。
69.使用组合模式,如果加入了新的对象部件,则必须更改客户端的代码。
X
70.组合模式为区别地对待整体和部分提供了十分有移交的解决方案。
X
71.组合模式是一种类的结构型模式。
X
72.JavaSE中的AWT和Swing包的设计可以看作是基于组合模式的。
73.装饰者模式中非常重要的一点就是具体组件和装饰类都是“抽象组件”的子类。
74.装饰者模式会导致设计中出现许多小类,因此不要过度使用。
75.继承是动态的,在系统编译时就已经决定了对象的行为。
X
76.让用户的代码和某个特定类的子类的代码解耦,这就是装饰者模式的意图。
X
77.用装饰者实例化组件时,将增加代码的复杂度,一旦应用了装饰者模式,不只需要实例化组件,还要把组件包装进装饰者,而这样的装饰者有多少个是不确定的。
78.享元模式的特点是:
复用内存中已存在的对象,降低系统创建对象实例的性能和消耗。
79.享元模式一般是给出本地内存资源节省的一个方案,并适应互联网上的分布式应用的情况。
80.在享元模式中,共享的享元对象越多,对存储空间的占用就越大。
X
81.在享元模式中,只有完全相同的事物才可以共享。
X
82.复合享元对象的状态是会改变的,因此复合享元对象是不能共享的。
83.代理模式是一种行为型设计模式。
X
84.由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
85.从现实上来说,代理模式主要实现了对象的继承。
X