单选题 如图所示中UML类图的设计模式的意图是______。在______情况中,应该使用该设计模式。

单选题 A.为特定的客户(或情况)提供特定系列的对象
B.定义一系列的算法并将它们一个个封装起来,使它们可以相互替换
C.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
D.定义一个用于创建对象的接口,让子类决定实例化哪一个类
【正确答案】 B
【答案解析】
单选题 A.类将责任转给某个帮助子类,而用户希望定位那个被授权的帮助子类
B.创建复杂对象的算法独立于组成对象的部分及这些部分的集合方式
C.希望提供产品的类库,只开放其接口,而不是其实现
D.许多相关类只是在行为方面有所区别
【正确答案】 D
【答案解析】图中的UML类图描绘的是设计模式中的Strategy(策略)模式。其设计意图是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。换言之,Strategy(策略)模式使得算法可独立于使用它的客户而变化。在以下情况中,应该使用Strategy设计模式:①许多相关类只是在行为方面有所区别;②需要算法的不同变体;③算法使用客户端未知的数据等。
Abstract Factory(抽象工厂)模式的设计意图是:为特定的客户(或情况)提供特定系列的对象。在以下情况中,应该使用Abstract Factory设计模式:①系统独立于产品的创建、组成及表示;②系统配置成具有多个产品的系列:③相关产品对象系列是共同使用的;④希望提供产品的类库,只开放其接口,而不是其实现等。
Builder(建造)模式的设计意图是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在以下情况中,应该使用Builder设计模式:①创建复杂对象的算法独立于组成对象的部分及这些部分的集合方式:②构造过程必须允许已构建对象有不同的表示等。
Factory Method(工厂方法)模式也称为Polymorphic Factory(多态性工厂)模式或Virtual Constructor(虚拟构造器),其设计意图是定义一个用于创建对象的接口,让子类决定实例化哪一个类。在以下情况中,应该使用Factory Method设计模式:①类不能预料它必须创建的对象的类;②类希望其子类指定它要创建的对象:③类将责任转给某个帮助子类,而用户希望定位那个被授权的帮助子类等。