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