网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
Decorator(装饰)模式的解决方案是什么?如何实现?
参考答案
更多 “Decorator(装饰)模式的解决方案是什么?如何实现?” 相关考题
考题
阅读以下说明和C++程序代码,将程序填充完整。【说明】有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。使用继承机制是添加功能的一种有效途径,从其他类继承过来的边框特性可以被多个子类的实例所使用。但这种方法不够灵活,因为边框的选择是静态的,用户不能控制对组件加边框的方式和时机。一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象添加边框。我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。它将客户请求转发给该组件,并且可能在转发前后执行一些额外的动作(例如画二个边框)。透明性使得你可以递归地嵌套多个装饰,从而可以添加任意多的功能。装饰对象结构模式的意图就是动态地给一个对象添加一些额外的职责。就增加功能来说,该模式相比生成子类更为灵活。其示意类图如图13-22所示。程序代码13-5是该模式的一个示例,说明了如何实现用户接口装饰,函数的实现全部省略。程序中定义了VisualComponent的一个子类Decorator,我们将生成Decorator的子类以获取不同的装饰。VisualComponent类是一个描述可视对象的抽象类,它描述了绘制和事件处理的接口。Decorator的子类定义了特殊的装饰功能,BorderDecorator子类给可视组件添加一个边框,ScrollDecorator给可视组件添加滚动功能。【程序代码13-5】(1);class Window{public:roid SetContents (VisualComponent * contents);};//VisualComponent类是一个描述可视对象的抽象类class VisllalComponent{public:VisualComponent(){};(2) void Draw(){};Virtual void Resize(){};};class Decorator:public VisualComponent{public:Decorator(){//…};Decorator(VisualComponent * vcom){//…};virtual vold Draw();virtual vold Resize();private:/* Decorator装饰由VisualComponent的指针实现,其在Decorator的构造函数中初始化*/VisualComponent (3) ;};vold Decorator::Draw(){(4);//缺省实现}void Decorator::Resize(){component->Resize();//缺省实现}//BorderDecorator 子类为它所包含的组件添加一个边框class BorderDecorator:public Decorator{public:BorderDecorator(VisualComponent * vcom,int borderWidth){//…};Virtual Void Draw();private:void DrawBorder(int);private:int borderWidth;};void BorderDecorator::Draw(){Decorator::Draw();DrawBorder(_width);}Void BorderDecorator::DrawBorder(int Width){//…)Void Window::SetConterlts(VlsualComponent * contents){//…}//SerollDecorat 给可视组件添加滚动功能class ScroliDecoratOr:public Decorator{public:ScrollDecorator(VlsualComponent * vcom){//…};//…);class TextView:public VisualComponent{//…};void main(void){//创建一个正文视图以及放入这个正文视图的窗口Window * window=new Window;TcxtView * textView=new TextView;//TextView是一个VisualComponent,它可以放入窗口中window->SetContents(textView);//得到一个有边界的和可以滚动的TextView,边界宽为1window->SetContents((5));}
考题
下列设计模式中,( )模式既是类结构型樽式,又是对象结构型模式。此模式与( )模式类似的特征是,都给另一个对象提供了一定程度上的间接性,都涉及到从自身以外的一个接口向这个对象转发请求。A.桥接(Bridge) B.适配器(Adapter) C.组成(Composite) D.装饰器 (Decorator) A.桥接(Bridge) B.适配器(Adapter) C.组成(Composite) D.装饰器 (Decorator)
考题
行为型设计模式描述类或对象如何交互和如何分配职责。以下( )模式是行为型设计模式。 A.装饰器 (Decorator)
B. 构建器 (Builder)
C.组合(Composite)
D. 解释器(Interpreter)
考题
行为型设计模式描述类或对象如何交互和如何分配职责。( )模式是行为型设计模式A.装饰器(Decorator)
B.构建器(Builder)
C.组合(Composite)
D.解释器(Interpreter)
考题
下图是(请作答此空)设计模式的类图,该设计模式的目的是( ),图中,Decorator和Component之间是( )关系,ConcreteDecorator和Decorator之间是( )关系。
A.适配器
B.桥接
C.装饰
D.代理
考题
下图是( )设计模式的类图,该设计模式的目的是( ),图中,Decorator和Component之间是(请作答此空)关系,ConcreteDecorator和Decorator之间是( )关系。
A.依赖和关联
B.依赖和继承
C.关联和实现
D.继承和实现
考题
以下哪种设计模式能够支持动态地给一个对象增加其他职责而且在职责整合时支持热插拔()A、桥接模式(Bridge)B、装饰模式(Decorator)C、享元模式(Flyweight)D、外观模式(Facade)
考题
单选题以下哪种设计模式能够支持动态地给一个对象增加其他职责而且在职责整合时支持热插拔()A
桥接模式(Bridge)B
装饰模式(Decorator)C
享元模式(Flyweight)D
外观模式(Facade)
考题
单选题下面属于结构模式的有()。A
策略模式(Strategies)B
单例模式(Singleton)C
抽象工厂模式(Abstract Factory)D
装饰模式(Decorator)
考题
单选题结构型模式中最体现扩展性的几种模式是()A
适配器(Adapte)模式B
合成(Composite)模式C
装饰(Decorator)模式D
桥接(Bridge)模式
热门标签
最新试卷