单选题 某企业欲开发一款家用电器遥控系统,让用户只需使用一个遥控器即可控制某些家用电器的开与关。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得UIML类图如下图所示。图中的类图所采用的设计模式是______,该模式的设计意图是______。应用该设计模式能够有效地让______之间的耦合性降至最低。
单选题
  • A.Adapter模式
  • B.Command模式
  • C.Observer模式
  • D.Strategy模式
【正确答案】 B
【答案解析】
单选题
  • A.将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作
  • B.使算法可独立于使用它的客户而变化
  • C.使原本由于接口不兼容而不能一起工作的那些类可以一起工作
  • D.定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
【正确答案】 A
【答案解析】
单选题
  • A.类LightCommand和类Light
  • B.类TVCommand和类TV
  • C.类RemoteController、类LightCommand和类TVCommand
  • D.类RemoteController、类Light和类TV
【正确答案】 D
【答案解析】[解析] 如图所示的UML类图所描绘的设计模式是Command(命令)模式。该模式的设计意图就是“将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作”。其中一种应用场合就是抽象出待执行的动作以参数化某种对象,可用过程语言中的回调(Callback)函数表达这种参数化机制。Command模式是回调机制的一个面向对象的替代品。本试题中,设计该家用电器遥控系统时,为了保证遥控器和家用电器之间的独立性,定义了Command类,当用户按下遥控器上的按钮时,触发Command上的On或者Off方法,因此,一对按钮分别对应一个Command对象。题目中的LightCommand及TVCommand分别为Command的子类,该子类用于控制实际的Light及TV对象,将On与Off方法委托给Light及TV实现。本题中应用命令模式的目的是:使类RemoteController(遥控器)、类Light及类TV之间的耦合性降至最低。 Strategy(策略)模式的设计意图是:使得算法可独立于使用它的客户而变化。 Adapter(适配器)模式是一种类对象结构型模式。通过将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 Observer(观察者)模式的设计意图是:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并被自动更新。
单选题 在设计模式演化时,必须定义一组设计类。其中,______代表将在软件执行之外持续存在的数据存储(例如,数据库)。
  • A.持久类
  • B.业务域类
  • C.过程类
  • D.系统类
【正确答案】 A
【答案解析】[解析] 在设计模式演化时,必须定义一组设计类。建议定义以下5种用于反映设计体系结构各个层次不同类型的设计类。 ①用户接口类:定义人机交互所必需的所有抽象。 ②业务域类:识别实现某些业务域元素所必需的属性和服务(方法)。通常是早期定义的分析类的精细化。 ③过程类:实现完整管理业务域类所必需的低层业务抽象。 ④持久类:代表将在软件执行之外持续存在的数据存储(例如,数据库)。 ⑤系统类:实现软件管理和控制功能,使得系统能够运行并在其计算环境内与外界通信。