问题
单项选择题
某个面向对象系统中的文本显示类(Text View)和图片显示类(Picture View)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条,或者带有黑色边框,或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加3个类,______设计模式可以实现该目的。
A.外观(Facade)
B.装饰(Decorate)
C.单例(Singleton)
D.模板方法(Template Method)
答案
参考答案:B
解析: 本试题4个选项所给出的4种设计模式的设计意图如下。
外观(Facade):为子系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容
装饰(Decorate):当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。
单例(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
模板方法(Template Method):在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。
本试题所给出的场景限定了能够增加的类的数量。可以通过新增加的3个类,分别继承组件类并实现给组件增加黑色边框、滚动条,以及增加黑色边框和滚动条功能,由于文本显示类和图片显示类都属于组件类,因此新增加的3个类能够给文本显示对象和图片显示对象增加额外的显示功能,该实现手段采用的就是装饰(Decorate)模式。