正确答案:
题目:某软件公司欲设计一款图像处理软件,帮助用户对拍摄的照片进行后期处理。在软件需求分析阶段,公司的系统分析师识别出了如下3个关键需求:图像处理软件需要记录用户在处理照片时所有动作,并能够支持用户动作的撤销与重做等行为。图像处理软件需要根据当前正在处理的照片的不同特征选择合适的处理操作,处理操作与照片特征之间具有较为复杂的逻辑关系。图像处理软件需要封装各种图像处理算法,用户能够根据需要灵活选择合适的处理算法;软件还要支持高级用户根据一定的规则添加自定义处理算法。在系统设计阶段,公司的架构师决定采用设计模式满足上述关键需求中对系统灵活性与扩展性的要求。具体来说,为了支持灵活的撤销与重做等行为,采用(1)最为合适:为了封装图像操作与照片特征之间的复杂逻辑关系,采用(2)最为合适;为了实现图像处理算法的灵活选择与替换,采用(3)最为合适。
解析:本题主要考查设计模式知识。题干描述了某软件公司一款图像处理软件的需求分析与设计过程,并明确指出采用设计模式实现关键需求对系统灵活性与扩展性的要求。针对需求1,为了支持灵活的撤销与重做等行为,采用命令模式最为合适,因为命令模式可以将一个请求封装为一个对象.从而使你可用不同的请求对客户进行参数化,还可以对请求排队,或记录请求日志,以及支持可撤销的操作。针对需求2,为了封装图像操作与照片特征之间的复杂逻辑关系,采用状态模式最为合适,因为状态模式将每一个条件分支放入一个独立的类中,这样就可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化;针对需求3,为了实现图像处理算法的灵活选择与替换,采用策略模式最为合适,因为策略模式定义一系列的算法,把它们封装起来,并且使它们可相互替换,使得算法可独立于使用它的客户而变化。
查看原题 查看所有试题
学习资料的答案和解析:
[单选题]在企业应用系统开发中,方法调用(Method Invocation)和消息(Messaging)机制是两种常用的数据处理与交换方式,下面关于这两种机制的描述,不正确的是()
从效率方面考虑,一般情况下消息机制比方法调用更有优势
解析:方法调用是指当某个事件发生时,调用某个对象的方法来处理事件。消息机制是指当某个事件发生时,把相关的消息发送给某些对象(一个或多个),相关对象捕获消息后,进行相应的处理。从以上定义可以看出,方法调用一般具有同步特性,而消息机制具有异步的特点。在消息调用机制中,消息是通过消息总线进行发送的,可以支持多个数据的发送者和接收者,更加灵活。从效率方面考虑,由于方法调用指定调用某个对象的方法,同步进行,所以效率要高一些。而消息机制由于采用异步方法,数据不一定得到很快的处理,具体要根据接收消息的对象的处理情况,所以一般情况下效率会低一些。但是,从可靠性方面考虑,由于消息机制是通过系统总线来完成,且可能有多个接收者,所以比方法调用更有优势。
[单选题]某软件公司承接了为某工作流语言开发解释器的工作。该工作流语言由多种活动节点构成,具有类XML的语法结构。用户要求解释器工作时,对每个活动节点进行一系列的处理,包括执行活动、日志记录、调用外部应用程序等,并且要求处理过程具有可扩展能力。针对这种需求,公司采用()最为恰当。
访问者模式
解析:根据题目的描述,可以看出本题的核心在于对某个具有固定结构的活动节点需要多种处理能力,且处理能力可扩展,也就是说要求在不改变原来类结构(活动节点)的基础上增加新功能。对照4个选项,发现访问者模式最符合要求。
[单选题]博学公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询上下文中输入查询关键字,如果当前查询环境下没有相关内容,则系统会将查询按照一定的顺序转发给其他查询环境。基于上述需求,采用()最为合适。
责任链模式
解析:本题主要考查设计模式的理解与应用。根据题干描述,在线文档系统需要根据用户的查询需求逐步将查询请求依次传递,对比4个候选项,其中在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。因此责任链模式是能够满足该要求的最好模式。
[单选题]某公司欲开发一门户网站,将公司的各个分公司及办事处信息进行整合。现决定采用Composite设计模式来实现公司的组织结构关系,并设计了如图12-18所示的UML类图。图中与Composite模式中的Component角色相对应的类是(1),与Composite角色相对应的类是(2)。
解析:本题考查组合模式相关的知识。图12-19为组合模式的UML图例。与题目给出的图例进行匹配可得出。
[单选题]如图8-40(a)所示的UML类图描绘的是设计模式中的(1)模式。如图8-40(b)所示的UML类图描述了该模式的一种应用,其中与图8-40(a)中的"Creator"对应的类是(2)。
解析:Command模式将一个请求封装为一个对象,从而将不同的请求对数化并进行排队或登记,以支持撤销操作。FactoryMethod模式定义一个创建对象的接口,但由子类决定需要实例化哪一个类。Composite模式将对象组成树结构来表示局部和整体的层次关系。客户可以统一处理单个对象和对象组合。ClassAdapter模式将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作。
[单选题]如图8-43(a)所示的UML类图描绘的是设计模式中的(1)模式。如图8-43(b)所示的UML类图描述了该模式的一种应用,其中与图8-43(a)中的"Abstraction"对应的类是(2)。
解析:Command模式将一个请求封装为一个对象,从而将不同的请求对数化并进行排队或登记,以支持撤销操作。Bridge模式将类的抽象概念和它的实现分离开来,使它们可以相互独立地变化。Composite模式将对象组成树结构来表示局部和整体的层次关系,客户可以统一处理单个对象和对象组合。Proxy模式给另一个对象提供一个代理或定位符号,以控制对它的访问。因此,UML类图描绘的是Bridge模式。我们把图8-43(b)和图8-43(a)进行对比,不难得出,与图8-43(a)中的"Abstraction"对应的类是DataAccess。
[单选题]基于软件架构的设计(ArchitectureBasedSoftwareDevelopment,ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。它强调采用(1)来描述软件架构,采用(2)来描述需求。
解析:根据基于软件架构的设计的定义,基于软件架构的设计(Architecture Based Software Development,ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。它强调采用视角和视图来描述软件架构,采用用例和质量属性场景来描述需求。
[单选题]软件质量属性通常需要采用特定的设计策略实现。例如,(1)设计策略能提高该系统的可用性,(2)设计策略能够提高该系统的性能,(3)设计策略能够提高该系统的安全性。
解析:本题考查提高质量属性的常见手段。提高可用性的手段包括:命令/响应机制、心跳机制、异常处理机制、冗余机制等。提高性能的手段包括:引入并发、维持数据或计算的多个副本、增加可用资源、控制采样频度、限制执行时间、固定优先级调度等。提高安全性的手段包括:身份认证、限制访问、检测攻击、维护完整性等。
[单选题]软件质量属性通常需要采用特定的设计策略实现。例如,(1)设计策略能提高该系统的可用性,(2)设计策略能够提高该系统的性能,(3)设计策略能够提高该系统的安全性。
解析:本题考查提高质量属性的常见手段。提高可用性的手段包括:命令/响应机制、心跳机制、异常处理机制、冗余机制等。提高性能的手段包括:引入并发、维持数据或计算的多个副本、增加可用资源、控制采样频度、限制执行时间、固定优先级调度等。提高安全性的手段包括:身份认证、限制访问、检测攻击、维护完整性等。