【软考系统架构设计师】复盘架构设计师真题知识点第十章—设计模式
复盘架构设计师真题知识点第十章---设计模式
前言部分 考点分析历年真题
01. 综合知识考点分析
- 设计模式在上午综合知识中出现的分数在3-5分左右,每年必考的重点考点。
- 考查的方式有考查每个设计模式的应用场景,设计模式的归类,设计模式的概念,根据设计模式填图。
- 告诉你设计模式,让你填图这种考法目前已经慢慢的不太流行了。但其他的考法还是存在的
- 从近几年的考题形式看,设计模式的考试目前更加倾向于了概念和归类的考查。
02. 案例分析考点分析
- 把设计模式作为大题来考查是只有两次,考查的方式和考上午综合知识是一样的。
- 但是在案例分析中考查的更多的是设计模式的运用场景。
- 从目前的趋势来看,设计模式单独做一个大题考查概率较小,但很可能会出现在某个案例的一个小问题当中。
03. 论文写作考点分析
- 设计模式作为论文考查只有在2016年考查过一次,之后就再也没有出现了。
- 作为论文考查的备考,我们还需要知道的是作用,好处在哪里,实际运用过程中缺陷在哪里。
- 顺带提一嘴,2020年系分的论文当中也考过设计模式。
第一部分 综合知识历年真题
2009下综合知识历年真题(7分)
【2009下架构真题第24题:黄色】
24.某软件公司欲开发一个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
解答:答案选择B|C。第一空错了。
• Command (命令)模式是设计模式中行为模式的一种,它将“请求”封装成对象, 以便使用不同的请求、队列或者日志来参数化其他对象。Command模式也支持可撤销的操作。Command模式的类图也如图所示:
• 对于题目所给出的图,与“Invoker”角色相对应的类是Menultem,与“Concrete Command”角色相对应的类是Open。
【2009下架构真题第46题:绿色】
46.(57)的选择是开发一个软件系统时的基本设计决策;(58)是最低层的模式,关注软件系统的设计与实现,描述了如何实现构件及构件之间的关系。引用-计数是C++ 管理动态资源时常用的一种(59)。
(57)
A.架构模式 B.惯用法 C.设计模式 D.分析模式
(58)
A.架构模式 B.惯用法 C.设计模式 D.分析模式
(59)
A.架构模式 B.惯用法 C.设计模式 D.分析模式
解答:答案选择A|B|B。本题考查软件设计中使用的架构模式、设计模式和惯用法的基本概念。送分题。
- 架构模式是软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策
- 设计模式主要关注软件系统的设计,与具体的实现语言无关
- 惯用法则是实现时通过某种特定的程序设计语言来描述构件与构件之间的关系,例如引用-计数就是C++语言中的一种惯用法。
【2009下架构真题第47题:绿色】
47.某软件公司基于面向对象技术开发了一套图形界面显示构件库VisualComponent。在使用该库构建某图形界面时,用户要求为界面定制一些特效显示效果,如带滚动条、能够显示艺术字体的透明窗体等。针对这种需求,公司采用(60)最为灵活。
(60)
A.桥接模式
B.命令模式
C.组合模式
D.装饰模式
解答:答案选择D。
- 根据题干描述,可以看出其基础是一个图形界面,并要求为图形界面提供一些定制的特效,例如带滚动条的图形界面,能够显示艺术字体且透明的图形界面等。这要求能够动态地对一个对象进行功能上的扩展,也可以对其子类进行功能上的扩展。对照选项中的4种设计模式,装饰模式最符合这一要求。
【2009下架构真题第48题:红色】
48.某软件公司承接了为某工作流语言开发解释器的工作。该工作流语言由多种活动节点构成,具有类XML的语法结构。用户要求解释器工作时,对每个活动节点进行一系列的处理,包括执行活动、日志记录、调用外部应用程序等,并且要求处理过程具有可扩展能力。针对这种需求,公司采用(61)最为恰当。
(61)
A.适配器模式
B.迭代器模式
C.访问者模式
D.观察者模式
解答:答案选择C。蒙错。
- 根据题干描述,可以看出本题的核心在于对某个具有固定结构的活动节点需要多种处理能力,且处理能力可扩展
- 也就是说要求在不改变原来类结构(活动节点)的基础上增加新功能。对照4个选项,发现访问者模式最符合要求。
2010下综合知识历年真题(5分)
【2010下架构真题第29题:绿色】
29.某银行系统采用Factory Method方法描述其不同账户之间的关系,设计出的类图如下所示。其中与Factory Method中的“Creator”角色相对应的类是( );与“Product” 角色相对应的类是()。
A.Bank
B.Account
C.Checking
D.Savings
解答:答案选择A|B。
- Factory Method模式的意图是,定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method是一个类的实例化延迟到其子类。
- 其中: 类Product定义了Factory Method所创建的对象的接口。
- 类 ConcreteProduct 用于实现Product 接口。
- 类Creator声明了工厂方法,该方法返回一个Product类型的对象。
- Creator也可以定义一^工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
- 类ConcreteCreator重定义了工厂方法,以返回一个ConcreteProduct实例
- 对照两张类图可以看出,与“Creator”角色相对应的类是Bank与“Product角色相对应的类是Account。
【2010下架构真题第48题:绿色】
48.某公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询上下文中输入查询关键字,如果当前查询环境下没有相关内容,则系统会将查询按照一定的顺序转发给其他查询环境。基于上述需求,采用( )最为合适。
A.责任链模式
B.桥接模式
C.装饰模式
D.适配器模式
解答:答案选择A。
- 根据题干描述,在线文档系统需要根据用户的查询需求逐步将查询请求依次传递,对比4个候选项,其中在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来形成一条链。
- 请求在这个链上传递,直到链上的某一个对象决定处理此请求。因此责任链模式是能够满足该要求的最好模式。
【2010下架构真题第49题:绿色】
49.某公司欲开发一套窗体图形界面类库。该类库需要包含若干预定义的窗格(Pane) 对象,例如TextPane、ListPane等,窗格之间不允许直接引用。基于该类库的应用由一个包含一组窗格的窗口组成,并需要协调窗格之间的行为。基于该类库,在不引用窗格的前提下实现窗格之间的协作,应甩开发者应采用( )最为合适
A.备忘录模式
B.中介者模式
C.访问者模式
D.迭代器模式
解答:答案选择B。二周目红色变绿色。
- 根据题干描述,应用系统需要使用某公司开发的类库,该应用系统由一组窗格组成,应用需要协调窗格之间的行为,并且不能引用窗格自身,在这种要求下,对比4个候选项,其中中介者模式用一个中介对象封装一系列的对象交互。
- 中介者使用的各对象不需要显式的相互调用,从而使其耦合松散。可以看出该模式最符合需求。
【2010下架构真题第50题:红色】
50.某公司开发一个文档编辑器,该编辑器允许在文档中直接嵌入图形对象,但开销很大。用户在系统设计之初提出编辑器在打开文档时必须十分迅速,可以暂时不显示当前页面以外的图形。针对这种需求,公司可以采用( )避免同时创建这些图形对象。
A.代理模式
B.外观模式
C.桥接模式
D.组合模式
解答:答案选择A。
- 根据题干描述,该编辑器需要在文档中高系统效率,需要避免同时创建这些图像
- 针对这些要求,对比候选项,可以发现代理模式可以解决直接访问对象时带来的问题,例如,要访问的对象在远程的机器上
- 对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问等。因此代理模式是最为合适的设计模式。
2011下综合知识历年真题(5分)
【2011下架构真题第25题:绿色】
25.某公司欲开发一门户网站,将公司的各个分公司及办事处信息进行整合。决定采用Composite设计模式来实现公司的组织结构关系,并设计了如下图所示的UML类图。图中与Composite模式中