东北大学继续教育学院《软件设计模式X》试 卷(作业考核 线上2) A 卷

微信小程序
资源下载
下载价格20

东 北 大 学 继 续 教 育 学 院

软件设计模式 X 试 卷(作业考核 线上2) A 卷(共 7 页)

总分 题号
得分

一、单选题(共40分,每题2分)

1. 常用的基本设计模式可分为(A)

A.创建型、结构型和行为型 B. 对象型、结构型和行为型

C.过程型、结构型和行为型 D. 抽象型、接口型和实现型

2. 对以下开闭原则的描述错误的是(A)

A.开闭原则与“对可变性的封装原则”没有相似性

B.找到个系统的可变元素,将它封装起来,叫开闭原则

C.对修改关闭,是其原则之一

D.从抽象层导出一个或多个新具体类可以改变系统的行为,是其原则之一

3. “不要和陌生人说话”是(D)原则的通俗表述。

A. 接口隔离 B. 里氏替换 C. 依赖倒置 D. 迪米特

4. 当创建一个具体的对象而又不希望指定具体的类时,可以使用(D)

A. 结构型 B. 创建型 C. 行为型 D.以上都可以

5. 以下(C )是利用一个对象,快速地生成一批对象。

A. 抽象工厂(Abstract Factory)模式 B. 原型(Prototype)模式

C. 合成(Composite)模式 D. 桥接(Bridge)模式

6. 以下(B )用来描述建造者( Builder )。

A. 定义一个用于创建对象的接口,让子类决定实例化哪一个类

B. 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

C. 保证一个类仅有一个实例,并提供→个访问它的全周访问点

D. 运用共享技术有效地支持大量细粒度的对象

7. 以下( C)用来描述工厂方法(Factory Method)模式。

A. 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类

B. 表示一个作用于某对象结构中的各元素的操作。它使用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作

C. 定义一个用于创建对象的接口,让子类决定实例化哪一个类。该模式使一个类的实例化延迟到其子类

D. 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化

8. 对象适配器模式是(A )原则的典型应用。

A. 将一个类的接口转换成客户希望的另外一个接口,本模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。

B. 定义一个用于创建对象的接口,让子类决定实例化哪一个类

C. 表示一个作用于某对象结构中的各元素的操作,它使用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作

D. 将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作

9. 关于模式适用性,以下(D )不适合使用Flyweight(享元)模式。

A. 一个应用程序使用了大量的对象

B. 完全由于使用大量的对象, 造成很大的存储开销

C. 对象的大多数状态都可变为外部状态

D. 用户想使用一个已经存在的类,而它的接口不符合用户的需求

10. 如果有一个2MB 的文本(英文字母),为了对其中的字母进行分类和计数,若为文本中的每个字母都定义一个对象显然不合实际,对与该问题最好可使用的模式是(B )。

A. 装饰(Decorator)模式 B. 享元( Flyweight )模式

C. 合成(Composite)模式 D.命令(Command)模式

11. 关于模式适用性, 以下(C )适合使用组合(Composite) 模式。

A. 用户想使用一个已经存在的类, 而它的接口不符合用户的需求

B. 当一个类的实例只能有几个不同状态组合中的一种时

C. 用户想表示对象的部分-整体层次结构

D. 一个对象的行为取决于它的状态, 并且它必须在运行时根据状态改变它的行为

12. 以下意图(A )可用来描述命令(Command)。

A. 将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作

B.定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换, 本模式使得算法可独立于使用它的客户而变化

C. 为其他对象提供一种代理以控制对这个对象的访问

D. 保证一个类仅有一个实例,并提供一个访问它的全局访问点

13. 以下不属于行为型模式的是(D )。

A.命令(Command ) B.策略(Strategy) C. 备忘录(Memento ) D.桥接(Bridge )

14. 关于模式适用性, 以下(B )不适合使用模板方法(Template Method) 模式。

A. 一次性实现-个算法的不变的部分,并将可变的行为留给子类来实现

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

C. 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码

D.控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展

15. 关于模式适用性,(B )不适合使用职责链(Chain of Responsibility)模式。

A. 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定

B. 在需要用比较通用和复杂的对象指针代替简单的指针的时候

C. 用户想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求

D. 可处理一个请求的对象集合应被动态指定

16. 以下意图( D)可用来描述中介者(Mediator) 。

A. 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示

B. 将抽象部分与它的实现部分分离, 使它们都可以独立变化

C. 定义一个用于创建对象的接口,让子类决定实例化哪一个类

D. 用-个中介对象来封装一系列的对象交互

17. 以下意图(B )可用来描述解释器(Interpreter)。

A. 将抽象部分与它的实现部分分离,使它们都可以独立变化

B. 给定一个语言, 定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子

C. 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

D. 为其他对象提供一种代理以控制对这个对象的访问

18. 以下意图( B)可用来描述访问者(Visitor )。

A. 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对都得到通知并被自动更新

B. 表示一个作用于某对象结构中的各元素的操作

C. 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态

D. 用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象

19. 以下意图(C )可用来描述状态( State )。

A. 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的精合关系

B. 提供一种方法顺序访问一个聚合对象中各个元素而又不需暴露该对象的内部表示

C. 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类

D. 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态

20. 设计模式具有的优点(A)。

A. 适应需求变化 B. 程序易于理解

C.减少开发过程中的代码开发工作量 D. 简化软件系统的设计

二、多选题(共10分,每题2分)

1. 以下是模式的基本要素的是( ABCD )。

A. 名称 B. 意图 C. 解决方案 D. 参与者和协作者

2. 以下属于创建型模式的是( AC )。

A.抽象工厂(Ab stract Factory)模式 B.合成(Composite) 模式

C. 单例(Singleton)模式 D. 桥接(Bridge)模式

3. 以下关于结构型模式说法正确的是( ABCD )。

A. 结构型模式可以在不破坏类封装性的基础上, 实现新的功能

B. 结构型模式主要用于创建一组对象

C. 结构型模式可以创建一组类的统→访问接口

D. 结构型模式可以在不破坏类封装性的基础上, 使类可以同不曾估计到的系统进行交互

4. 以下属于行为对象模式的是( BCD )。

A. 装饰(Decorator)模式 B. 迭代器(Iterator)模式

C. 命令(Command)模式 D. 中介者(Mediator)模式

5. 下面( ACD )是访问者模式的优缺点。

A. 访问者模式使得易于增加新的操作 B. 访问者集中相关的操作而分离无关的操作

C. 增加新的ConcreteElment 类很困难 D. 通过类层次进行访问

三、判断题(共10分,每题1分;请在认为正确的题目后面写T,错误的题目后面写F)

1. 设计模式的两大主题是系统复用与系统扩展。( T )

2. 抽象工厂模式提供了一系列相关或相互依赖对象的接口且必须指定他们具体的类。( F )

3. 对象适配器模式是依赖倒转原则的典型应用。( F )

4. Open-Close原则的含义是一个软件实体应当对扩展开放,对修改关闭。( T )

5. Singleton(单例)模式属于结构性模式。( F )

6. 常用的设计模式可分为过程型、创建型和结构型。( F )

7. 对观察者模式,触发事件的对象——Subject对象不需要知道观察事件的所有对象。( T )

8. 通过在问题领域中使用模式,可以用一种不同的方式来看待问题。( T )

9. 对象适配器模式是依赖倒转原则的典型应用。( F )

10. Template Method是用以帮助从不同的步骤中抽象出一个通用的过程的模式。( T )

四、名词解释(共15分,每题3分)

1. 设计模式

答: 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

2. 开闭原则

答: 一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展一个系统的行为。

3.单一职责原则

答: 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。

4.依赖关系

答:依赖关系是一种使用关系,它是对象之间相合度最弱的一种关联方式, 是临时性

的关联。

5.组合关系

答:组合关系也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系, 是contains-a 关系。在组合关系中, 整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。

五、简答题(共15分,每题5分)

1. 设计模式一般有哪几个基本要素?

设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。

2. 创建型模式分包括哪几种设计模式,各是什么并简要说明。

⑴单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。

⑵原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。

⑶工厂方法(Factory Method)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。

⑷抽象工厂(Abstract Factory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。

⑸建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。

3. 说明访问者模式的定义与主要优缺点。

定义:表示一个作用于其对象结构柱的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。

优点:1访问者模式使得易于新增的操作,访问者使得增加依赖于复杂对象结构的构件的操作变得容易。仅需增加一个新的访问者即可在一个对象结构定义新的操作。相反,如果每个功能都分散在多个类之上的话,定义新的操作必须修改每一类。

  1. 访问者集中相关的操作而分离无关的操作,相关的行为不是分布在定义该对象的结构的各个类上,而是集中在一个访问者中。

缺点:1增加新的Concrete Element类很困难 Visitor模式使得难以新增新的Element的子类。每增加一个新的Concrete Element都要在visitor中添加新的抽象操作,并在每一个Concrete visitor类中实现相应操作。有时可以在Visitor中提供一个缺省的实现,这一实现可以被大多数的Concrete visitor继承,但这与其说是一个规律还不如说是一个例外。

2.破坏封装;访问者方法假定Concrete Element接口的功能足够强,足以让访问者进行他们的工作,结果是该模式常常迫使你提供访问元素内部状态的公共操作,这可能会破坏他的封装。

六、综合题(共10分)

当“人民币汇率” 升值时, 进口公司的进口产品成本降低且利润率提升,出口公司的出口产品收入降低且利润率降低; 当“人民币汇率” 贬值时,进口公司的进口产品成本提升且利润率降低, 出口公司的出口产品收入提升且利润率提升。利用观察者模式设计一个程序, 分析“人民币汇率”的升值或贬值对进口公司的进口产品成本或出口公司的出口产品收入以及公司的利润率的影响。

提示:这里的汇率(Rate) 类是抽象目标类,它包含了保存观察者(Company ) 的List 和增加/删除观察者的方法, 以及有关汇率改变的抽象方法change(int number); 而人民币汇率(RMBrate)类是具体目标,它实现了父类的change(int number)方法,即当人民币汇率发生改变时通过相关公司; 公司(Company)类是抽象观察者, 它定义了一个有关汇率反应的抽象方法respons巳(int number); 进口公司( ImportCompany )类和出口公司( E xportCompany )类是具体观察者类,它们实现了父类的response(int

number)方法, 即当它们接收到汇率发生改变的通知时作为相应的反应。

请画出该程序的类图。

答:

人民币汇率分析程序的结构图

点点赞赏,手留余香 给TA打赏

AI创作

微信文档购买入口,点击图片加微信

评论0

请先

支持多种货币
支持多种货币付款,满足您的付款需求
7天无忧退换
安心无忧购物,售后有保障
专业客服服务
百名资深客服7*24h在线服务
发货超时赔付
交易成功极速发货,专业水准保证时效性
电大形成性考核册纸质作业代抄购买  
显示验证码

社交账号快速登录