(29)设计模式可以动态地给一个对象增加其他职责,而且这种方式比生成子类实现更为灵活。图5-3所示为该设计模式的类图,其中,(30)是装饰抽象类,维护一个内有的Component。
单选题 (29)
【正确答案】 D
【答案解析】
单选题 (30)
【正确答案】 C
【答案解析】解析:装饰模式的意图是动态的给一个对象增加职责,即在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的适用性如下: (1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。处理那些可以撤销的职责。 (2)当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。 本题中所给出的类图就是装饰模式的类图,其中: Component:部件,定义对象的接口,可以给这些对象动态的增加职责(方法)。 Concrete Component:具体部件,定义具体的对象,Decorator可以为它增加额外的职责(方法)。 Decorator:装饰抽象类,维护一个内有的Component,并且定义一个与Component接口一致的接口。 Concrete Decorator:具体装饰对象,给内在的具体部件对象增加具体的职责(方法)。 享元模式(轻量级模式)的意图是运用共享技术有效地支持大量细粒度的对象。系统只是用少量的对象,而这些对象都相近,状态变化很小,对象使用次数增多。 代理模式的意图是为其他对象提供一个代理或地方以控制对这个对象的访问。当客户向Proxy对象第一次提出请求时,Proxy实例化真实的对象,并且将请求传给它,以后所有客户的请求都由Proxy传递给封装了的对象。 策略模式的意图是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 另外需要注意的是,除了试题中出现的设计模式外,23种设计模式中其余的设计模式也是需要理解的内容。