软考真题之设计模式

时光怂恿深爱的人放手 提交于 2019-11-26 22:36:58

18年系统架构设计师

设计模式描述了一个出现在特定设计语境中的设计再现问题,并为它的解决方案提供了一个经过充分验证的通用方案,不同的设计模式关注解决不同的问题。例如,抽象工厂模式提供一个接口,可用创建一系列相关或相互依赖的对象,而无需指定它们具体的类,它是一种 54 模式; 55 模式将类的抽象部分和它的实现部分分离出来,使它们可以独立变化,它属于 56 模式; 57 模式将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。
54
A. 组合型
B. 结构型
C. 行为型
D. 创建型
55
A. Bridge
B. Proxy
C. Prototype
D. Adapter
56
A. 组合型
B. 结构型
C. 行为型
D. 创建型
57
A. Command
B. Facade
C. Memento
D. Visitor

17年系统架构设计师

●按照设计模式的目的进行划分,现有的设计模式可以分为三类。其中创建型模式通过采用抽象类所定义的接口,封装了系统中对象如何创建、组合等信息,其代表有 54 模式等; 55 模式主要用于如何组合已有的类和对象以获得更大的结构,其代表有Adapter模式等; 56 模式主要用于对象之间的职责及其提供服务的分配方式,其代表有 57 模式等。
54
A. Decorator
B. Flyweight
C. Command
D. Singleton
55
A. 合成型
B. 组合型
C. 结构型
D. 聚合型
56
A. 行为型
B. 交互型
C. 耦合型
D. 关联型
57
A. Prototype
B. Facade
C. Proxy
D. Visitor

16年系统架构设计师

设计模式基于面向对象技术,是人们在长期的开发实践中良好经验的结晶,提供了一个简单、统一的描述方法,使得人们可以复用这些软件设计办法、过程管理经验。按照设计模式的目的进行划分,现有的设计模式可以分为创建型、 54 和行为型三种类型。其中 55 属于创建型模式, 56 属于行为型模式。 57 模式可以将一个复杂的组件分成功能性抽象和内部实现两个独立的但又相关的继承层次结构,从而可以实现接口与实现分离。
54
A. 合成型
B. 组合型
C. 结构型
D. 聚合型
55
A. Adaptor
B. Facade
C. Command
D. Singleton
56
A. Decorator
B. Composite
C. Memento
D. Builder
57
A. Prototype
B. Flyweight
C. Adapter
D. Bridge

15年系统架构设计师

●某软件公司欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。在明确用户需求后,该公司的架构师决定采用Bridge模式实现该软件,并设计UML类图如下图所示。图中与Bridge模式中的Abstraction角色相对应的类是 32 ,与Implementor角色相对应的类是 33

32
A. Shape
B. Drawing
C. Rectangle
D. V2Drawing
33
A. Shape
B. Drawing
C. Rectangle
D. V2Drawing

●在面向对象设计的原则中, 36 原则是指抽象不应该依赖予细节,细节应该依赖于抽象,即应针对接口编程,而不是针对实现编程。
36
A. 开闭
B. 里氏替换
C. 最少知识
D. 依赖倒置

14年系统架构设计师

●一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。采用 32 模式,用一个特定对象来封装一系列的对象交互,从而使各对象不需要显式地相互引用,使其耦合松散,而且可以独立地改变它们之间的交互。
32
A. 解释器(Interpreter)
B. 策略(Strategy)
C. 中介者(Mediator)
D. 迭代器(Iterator)

●某广告公司的宣传产品有宣传册、文章、传单等多种形式,宣传产品的出版方式包括纸质方式、CD、DVD、在线发布等。现要求为该广告公司设计一个管理这些宣传产品的应用,采用 33 设计模式较为合适,该模式 34
33
A. Decorator
B. Adapter
C. Bridge
D. Façade
34
A. 将一系列复杂的类包装成一个简单的封闭接口
B. 将抽象部分与它的实现部分分离,使它们都可以独立地变化
C. 可在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
D. 将一个接口转换为客户希望的另一个接口

13年系统架构设计师

●某系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条或者带有黑色边框,或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加3个类。那么采用设计模式 35 可实现该需求,其优点是 36
35
A. 外观
B. 单体
C. 装饰
D. 模板
36
A. 比静态继承具有更大的灵活性
B. 提高已有功能的重复使用性
C. 可以将接口与实现相分离
D. 为复杂系统提供了简单接口

12年系统架构设计师

●对于违反里氏替换原则的两个类A和B,可以采用的候选解决方案中,正确的是 35
35
A. 尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程
B. 创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题
C. 将B到A的继承关系改成组合关系
D. 区分是Is-a还是Has-a。如果是Is-a,可以使用继承关系,如果是Has-a,应该改成组合或聚合关系

●若系统中的某子模块需要为其他模块提供访问不同数据库系统的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,再打开数据库,最后对数据进行查询。针对上述需求,可以采用 49 设计模式抽象出相同的数据库访问过程,该设计模式 50
49
A. 外观
B. 装饰
C. 桥接
D. 享元
50
A. 可以动态、透明地给单个对象添加职责
B. 为子系统定义了一个高层接口,这个接口使得这一子系统更加容易使用
C. 通过运用共享技术,有效支持大量细粒度的对象
D. 将抽象部分与它的实现部分分离,使它们都可以独立地变化

●某软件公司欲设计一款图像处理软件,帮助用户对拍摄的照片进行后期处理。在软件需求分析阶段,公司的系统分析师识别出了如下3个关键需求:
图像处理软件需要记录用户在处理照片时所有动作,并能够支持用户动作的撤销与重做等行为。
图像处理软件需要根据当前正在处理的照片的不同特征选择合适的处理操作,处理操作与照片特征之间具有较为复杂的逻辑关系。
图像处理软件需要封装各种图像处理算法,用户能够根据需要灵活选择合适的处理算法;软件还要支持高级用户根据一定的规则添加自定义处理算法。
在系统设计阶段,公司的架构师决定采用设计模式满足上述关键需求中对系统灵活性与扩展性的要求。具体来说,为了支持灵活的撤销与重做等行为,采用 51 最为合适;为了封装图像操作与照片特征之间的复杂逻辑关系,采用 52 最为合适;为了实现图像处理算法的灵活选择与替换,采用 53 最为合适。
51
A. 工厂模式
B. 责任链模式
C. 中介者模式
D. 命令模式
52
A. 状态模式
B. 适配器模式
C. 组合模式
D. 单例模式
53
A. 模板方法模式
B. 访问者模式
C. 策略模式
D. 观察者模式

11年系统架构设计师

最少知识原则(也称为迪米特法则)是面向对象设计原则之一,指一个软件实体应当尽可能少地与其他实体发生相互作用。这样,当一个实体被修改时,就会尽可能少地影响其他的实体。下列叙述中, 31 不符合最少知识原则。
31
A. 在类的划分上,应当尽量创建松耦合的类
B. 在类的设计上,只要有可能,一个类型应当设计成不变类
C. 在类的结构设计上,每个类都应当尽可能提高对其属性和方法的访问权限
D. 在对其他类的引用上,一个对象对其他对象的引用应当降到最低

●某公司欲开发一门户网站,将公司的各个分公司及办事处信息进行整合。决定采用Composite设计模式来实现公司的组织结构关系,并设计了如下图所示的UML类图。图中与Composite模式中的Component角色相对应的类是 33 ,与Composite角色相对应的类是 34

33
A. Company
B. Finance
C. HRDepartment
D. Department
34
A. Company
B. FinanceDepartmen
C. HRDepartment
D. ConcreteCompany

●某软件公司正在设计一个通用的嵌入式数据处理平台,需要支持多种数据处理芯片之间的数据传递与交换。该平台的核心功能之一要求能够屏蔽芯片之间的数据交互,使其耦合松散,并且可以独立改变芯片之间的交互过程。针对上述需求,采用 53 最为合适。
53
A. 抽象工厂模式
B. 中介者模式
C. 策略模式
D. 状态模式

●某软件公司正在设计一个图像处理软件,该软件需要支持用户在图像处理过程中的撤销和重做等动作,为了实现该功能,采用 54 最为合适。
54
A. 单例模式
B. 命令模式
C. 访问者模式
D. 适配器模式

●某互联网公司正在设计一套网络聊天系统,为了限制用户在使用该系统时发表不恰当言论,需要对聊天内容进行特定敏感词的过滤。针对上述功能需求,采用 55 能够灵活配置敏感词的过滤过程。
55
A. 责任链模式
B. 工厂模式
C. 组合模式
D. 装饰模式

10年系统架构设计师

●某银行系统采用Factory Method方法描述其不同账户之间的关系,设计出的类图如下所示。其中与Factory Method中的Creator角色相对应的类是 33 ;与Product角色相对应的类是 34

33
A. Bank
B. Account
C. Checking
D. Savings
34
A. Bank
B. Account
C. Checking
D. Savings

●某公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询上下文中输入查询关键字,如果当前查询环境下没有相关内容,则系统会将查询按照一定的顺序转发给其他查询环境。基于上述需求,采用 59 最为合适。
59
A. 责任链模式
B. 桥接模式
C. 装饰模式
D. 适配器模式

●某公司欲开发一套窗体图形界面类库。该类库需要包含若干预定义的窗格(Pane) 对象,例如TextPane、ListPane等,窗格之间不允许直接引用。基于该类库的应用由一个包含一组窗格的窗口组成,并需要协调窗格之间的行为。基于该类库,在不引用窗格的前提下实现窗格之间的协作,应用开发者应采用 60 最为合适。
60
A. 备忘录模式
B. 中介者模式
C. 访问者模式
D. 迭代器模式

●某公司开发一个文档编辑器,该编辑器允许在文档中直接嵌入图形对象,但开销很大。用户在系统设计之初提出编辑器在打开文档时必须十分迅速,可以暂时不显示当前页面以外的图形。针对这种需求,公司可以采用 61 避免同时创建这些图形对象。
61
A. 代理模式
B. 外观模式
C. 桥接模式
D. 组合模式

09年系统架构设计师

●某软件公司欲开发一个Windows平台上的公告板系统。在明确用户需求后,该公司的架构师决定采用Command模式实现该系统的界面显示部分,并设计UML类图如下图所示。图中与Command模式中的Invoker角色相对应的类是 30 ,与ConcreteCommand角冉相对应的类是 31

30
A. Command
B. Menultem
C. Open
D. BulktinBoardScreen
31
A. Command
B. Menultem
C. Open
D. BulktinBoardScreen

●某软件公司基于面向对象技术开发了一套图形界面显示构件库Visual Component。在使用该库构建某图形界面时,用户要求为界面定制一些特效显示效果,如带滚动条、能够显示艺术字体的透明窗体等。针对这种需求,公司采用 60 最为灵活。
60
A. 桥接模式
B. 命令模式
C. 组合模式
D. 装饰模式

●某软件公司承接了为某工作流语言开发解释器的工作。该工作流语言由多种活动节点构成,具有类XML的语法结构。用户要求解释器工作时,对每个活动节点进行一系列的处理,包括执行活动、日志记录、调用外部应用程序等,并且要求处理过程具有可扩展能力。针对这种需求,公司采用 61 最为恰当。
61
A. 适配器模式
B. 迭代器模式
C. 访问者模式
D. 观察者模式

中英文对照

Adapter/Adaptor 适配器模式
Builder 建造者模式
Bridge 桥接(梁)模式
Command 命令模式
Composite 组合模式
Decorator 装饰模式
Facade 门面模式
Flyweight 享元模式
Interpreter 解释器模式
Iterator 迭代器模式
Mediator 中介者模式
Memento 备忘录模式
Proxy 代理模式
Prototype 原型模式
Singleton 单例(体)模式
Strategy 策略模式
Visitor 访问者模式

参考答案

18年DABA
17年DCAD
16年CDCD
15年ABD
14年CCB
13年CA
12年AABDAC
11年CADBBA
10年ABABA
09年BCDC

更多内容请关注个人公众号

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!