正确答案:
题目:如图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。
查看原题 查看所有试题
学习资料的答案和解析:
[单选题]在企业应用系统开发中,方法调用(Method Invocation)和消息(Messaging)机制是两种常用的数据处理与交换方式,下面关于这两种机制的描述,不正确的是()
从效率方面考虑,一般情况下消息机制比方法调用更有优势
解析:方法调用是指当某个事件发生时,调用某个对象的方法来处理事件。消息机制是指当某个事件发生时,把相关的消息发送给某些对象(一个或多个),相关对象捕获消息后,进行相应的处理。从以上定义可以看出,方法调用一般具有同步特性,而消息机制具有异步的特点。在消息调用机制中,消息是通过消息总线进行发送的,可以支持多个数据的发送者和接收者,更加灵活。从效率方面考虑,由于方法调用指定调用某个对象的方法,同步进行,所以效率要高一些。而消息机制由于采用异步方法,数据不一定得到很快的处理,具体要根据接收消息的对象的处理情况,所以一般情况下效率会低一些。但是,从可靠性方面考虑,由于消息机制是通过系统总线来完成,且可能有多个接收者,所以比方法调用更有优势。
[单选题]某软件公司基于面向对象技术开发了一套图形界面显示构件库Visual Component。在使用该库构建某图形界面时,用户要求为界面定制一些特效显示效果,如带滚动条、能够显示艺术字体的透明窗体等。针对这种需求,公司采用()最为灵活。
装饰模式
解析:本题考查设计模式的应用。每一种设计模式,都有自身的一些优势,以应对某些特定的应用场合。根据题目的描述,需要开发的是图形界面构件库,并要求为图形界面提供一些定制的特效,如带滚动条的图形界面,能够显示艺术字体且透明的图形界面等。这要求能够动态地对一个对象进行功能上的扩展,也可以对其子类进行功能上的扩展。对照选项中的4种设计模式,装饰模式最符合这一要求。
[单选题]某软件公司欲设计一款图像处理软件,帮助用户对拍摄的照片进行后期处理。在软件需求分析阶段,公司的系统分析师识别出了如下3个关键需求:图像处理软件需要记录用户在处理照片时所有动作,并能够支持用户动作的撤销与重做等行为。图像处理软件需要根据当前正在处理的照片的不同特征选择合适的处理操作,处理操作与照片特征之间具有较为复杂的逻辑关系。图像处理软件需要封装各种图像处理算法,用户能够根据需要灵活选择合适的处理算法;软件还要支持高级用户根据一定的规则添加自定义处理算法。在系统设计阶段,公司的架构师决定采用设计模式满足上述关键需求中对系统灵活性与扩展性的要求。具体来说,为了支持灵活的撤销与重做等行为,采用(1)最为合适:为了封装图像操作与照片特征之间的复杂逻辑关系,采用(2)最为合适;为了实现图像处理算法的灵活选择与替换,采用(3)最为合适。
解析:本题主要考查设计模式知识。题干描述了某软件公司一款图像处理软件的需求分析与设计过程,并明确指出采用设计模式实现关键需求对系统灵活性与扩展性的要求。针对需求1,为了支持灵活的撤销与重做等行为,采用命令模式最为合适,因为命令模式可以将一个请求封装为一个对象.从而使你可用不同的请求对客户进行参数化,还可以对请求排队,或记录请求日志,以及支持可撤销的操作。针对需求2,为了封装图像操作与照片特征之间的复杂逻辑关系,采用状态模式最为合适,因为状态模式将每一个条件分支放入一个独立的类中,这样就可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化;针对需求3,为了实现图像处理算法的灵活选择与替换,采用策略模式最为合适,因为策略模式定义一系列的算法,把它们封装起来,并且使它们可相互替换,使得算法可独立于使用它的客户而变化。
[单选题]当不适合采用生成子类的方法对已有的类进行扩充时,可以采用(1)设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用(2)设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用(3)设计模式将该类的接口转换成我们希望的接口。
解析:本题考查面向对象设计。装饰模式主要的目的是在无法生成子类的情况下给一个对象动态地增加新的职责;享元设计模式是共享大量细粒度的对象;适配器设计模式则是将已有的接口转换为系统希望的接口形式。