itgle.com

Decorator(装饰)模式的意图是为一个对象连接附加的职责。

题目

Decorator(装饰)模式的意图是为一个对象连接附加的职责。


相似考题

4.阅读以下说明和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));}

更多“Decorator(装饰)模式的意图是为一个对象连接附加的职责。”相关问题
  • 第1题:

    下图所示为(46)设计模式,

    A.组件(Component)

    B.适配器(Adapter)

    C.组合(Composite)

    D.装饰器(Decorator)


    正确答案:C
    题中的图,即为组合模式的标准UML图,所以应对软件设计师考试,要求掌握常见设计模式的UML图示。组合模式将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

  • 第2题:

    下列设计模式中,( )模式既是类结构型樽式,又是对象结构型模式。此模式与( )模式类似的特征是,都给另一个对象提供了一定程度上的间接性,都涉及到从自身以外的一个接口向这个对象转发请求。

    A.桥接(Bridge) B.适配器(Adapter) C.组成(Composite) D.装饰器 (Decorator) A.桥接(Bridge) B.适配器(Adapter) C.组成(Composite) D.装饰器 (Decorator)


    正确答案:B,A

  • 第3题:

    行为型设计模式描述类或对象如何交互和如何分配职责。( )模式是行为型设计模式

    A.装饰器(Decorator)
    B.构建器(Builder)
    C.组合(Composite)
    D.解释器(Interpreter)

    答案:D
    解析:
    本题考查设计模式的基础知识。设计模式:是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。设计模式分为三种类型,共23种。1、创建型模式:单例模式、抽象工厂模式、建造者(构建)模式、工厂模式、原型模式。2、结构型模式:适配器模式、桥接模式、装饰(器)模式、组合模式、外观模式、享元模式、代理模式。3、行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。AC为结构型设计模式,B为创建型设计模式。故正确答案为:D

  • 第4题:

    ( )设计模式能够动态地给一个对象添加一些额外的职责而无需修改此对象的结构

    A.组合(Composite)
    B.外观(Facade)
    C.享元(Flyweight)
    D.装饰器(Decorator)

    答案:D
    解析:
    抽象工厂模式(Abstract Factory):提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类
    构建器模式(Builder):将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示
    工厂方法模式(Factory Method):定义一个创建对象的接口,但由子类决定需要实例化哪一个类工厂方法使得子类实例化的过程推迟
    原型模式(Prototype):用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象
    单例模式(Singleton):保证一个类只有一个实例,并提供一个访问它的全局访问点
    适配器模式(Adapter):将一个类的接口转换成用户希望得到的另一种接口它使原本不相容的接口得以协同工作
    桥接模式(Bridge):将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化
    组合模式(Composite):将对象组合成树型结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
    装饰模式(Decorator):动态地给一个对象添加一些额外的职责它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活
    外观模式(Facade):定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用
    享元模式(Flyweight):提供支持大量细粒度对象共享的有效方法
    代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问
    职责链模式(Chain of)

  • 第5题:

    欲动态地给一个对象添加职责,宜采用()模式。

    • A、适配器(Adapter)
    • B、桥接(BridgE.
    • C、组合(CompositE.
    • D、装饰器(Decorator)

    正确答案:D

  • 第6题:

    Decorator(装饰)模式的效果是什么?


    正确答案: 被添加的功能属于小的对象。好处是可以在Concrete Component对象的功能之前或之后动态添加功能。虽然一个装饰者可以在被装饰者之前或之后添加功能,但对象链总是以Concrete Component对象结束。

  • 第7题:

    以下哪种设计模式能够支持动态地给一个对象增加其他职责而且在职责整合时支持热插拔()

    • A、桥接模式(Bridge)
    • B、装饰模式(Decorator)
    • C、享元模式(Flyweight)
    • D、外观模式(Facade)

    正确答案:B

  • 第8题:

    下面不属于结构模式的有() 。

    • A、适配器模式(Adapter)
    • B、单例模式 (Singleton)
    • C、桥接模式(Bridge)
    • D、装饰模式(Decorator)

    正确答案:B

  • 第9题:

    问答题
    Decorator(装饰)模式的解决方案是什么?如何实现?

    正确答案: 解决方案是允许扩展一个对象的功能,而不必借助于子类型化。
    实现:创建一个抽象类来表示原始的类和要添加到这个类上的新功能。在装饰者类中,将“对新功能的调用”放在“对紧随其后对象的调用”之前或之后,以获得正确的顺序。
    解析: 暂无解析

  • 第10题:

    单选题
    Decorator(装饰)模式的意图是:()。
    A

    定义一系列的算法,把它们一个个的封装起来,并且使它们可相互替换

    B

    为一个对象动态连接附加的职责

    C

    你希望只拥有一个对象,但不用全局对象来控制对象的实例化

    D

    在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新


    正确答案: B
    解析: 暂无解析

  • 第11题:

    判断题
    Decorator(装饰)模式的意图是为一个对象连接附加的职责。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第12题:

    单选题
    结构型模式中最体现扩展性的几种模式是()
    A

    适配器(Adapte)模式

    B

    合成(Composite)模式

    C

    装饰(Decorator)模式

    D

    桥接(Bridge)模式


    正确答案: C
    解析: 暂无解析

  • 第13题:

    Decorator模式的结构图如图13-4所示。关于其说法不正确的是(50)。

    A.动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。

    B.在不影响其它对象的情况下,以动态、透明的方式给单个对象添加职责。

    C.Decorator模式的两个主要优点是:比静态继承更灵活,避免在层次结构高层的类有太多的特征。

    D.Decorator模式是一种行为模式。


    正确答案:D
    解析:Decorator模式是一种对象结构模式,用于描述对象之间的结构关系,从题中的结构图可看出,它并不描述对象的行为。Decorator模式的意图是动态地给一个对象添加一些额外的职责。就增加功能来说,该模式相比生成子类更为灵活。它适用于以下情况:①在不影响其它对象的情况下,以动态、透明的方式给单个对象添加职责。②处理那些可以撤消的职责。③当不能采用生成子类的方法进行扩充时,有两种情况:一种情况可能是有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长;另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。

  • 第14题:

    行为型设计模式描述类或对象如何交互和如何分配职责。以下( )模式是行为型设计模式。

    A.装饰器 (Decorator)
    B. 构建器 (Builder)
    C.组合(Composite)
    D. 解释器(Interpreter)

    答案:D
    解析:
    AC为结构型,B为创建型。在面向对象系统设计中,每一个设计模式都集中于一个特定的面向对象设计问题或设计要点,描述了什么时候使用它,在另一些设计约束条件下是否还能使用,以及使用的效果和如何取舍。按照设计模式的目的可以分为创建型模式、结构型模式和行为型模式3大类。创建型模式与对象的创建有关:结构型模式处理类或对象的组合,涉及如何组合类和对象以获得更大的结构:行为型模式对类或对象怎样交互和怎样分配职责进行描述。创建型模式包括Factory Method、Abstract Factory、Builder、Prototype和Singleton;结构型模式包括Adapter(类)、Adapter(对象)、Bridge、Composite、Decorator、Fa?ade、Flyweight和Proxy;行为型模式包括Interpreter、Template Method、Chain of Responsibility、Command、Iterator、Mediator、Memento Observer State Strategy和Visitor

  • 第15题:

    下图是(请作答此空)设计模式的类图,该设计模式的目的是( ),图中,Decorator和Component之间是( )关系,ConcreteDecorator和Decorator之间是( )关系。

    A.适配器
    B.桥接
    C.装饰
    D.代理

    答案:C
    解析:
    图中Component定义一个对象接口,可以给这些对象动态地添加职责ConcreteComponent定义一个对象,可以给这个对象添加一些职责Decorator维持一个指向Compnonent对象的指针 ,并定义一个与Component接口-致的接口ConcreateDecorator向组件添加职责装饰( Decorator )模式适应于:在不影响其它对象的情况下,以动态、透明的方式给单个对象添加职责;处理那些可以撤销的职责;当不能采用生成子类的方式进行扩充时Decorator和Component之间应为关联与实现关系ConcreteDecorator和Decorator之间是继承(泛化)关系

  • 第16题:

    Decorator(装饰)模式的解决方案是什么?如何实现?


    正确答案: 解决方案是允许扩展一个对象的功能,而不必借助于子类型化。
    实现:创建一个抽象类来表示原始的类和要添加到这个类上的新功能。在装饰者类中,将“对新功能的调用”放在“对紧随其后对象的调用”之前或之后,以获得正确的顺序。

  • 第17题:

    结构型模式中最体现扩展性的几种模式是()

    • A、适配器(Adapte)模式
    • B、合成(Composite)模式
    • C、装饰(Decorator)模式
    • D、桥接(Bridge)模式

    正确答案:C

  • 第18题:

    每个Decorator对象在被装饰的功能之前或之后执行自己的附加功能。


    正确答案:正确

  • 第19题:

    Decorator(装饰)模式的意图是:()。

    • A、定义一系列的算法,把它们一个个的封装起来,并且使它们可相互替换
    • B、为一个对象动态连接附加的职责
    • C、你希望只拥有一个对象,但不用全局对象来控制对象的实例化
    • D、在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新

    正确答案:B

  • 第20题:

    判断题
    每个Decorator对象在被装饰的功能之前或之后执行自己的附加功能
    A

    B


    正确答案:
    解析: 暂无解析

  • 第21题:

    单选题
    以下哪种设计模式能够支持动态地给一个对象增加其他职责而且在职责整合时支持热插拔()
    A

    桥接模式(Bridge)

    B

    装饰模式(Decorator)

    C

    享元模式(Flyweight)

    D

    外观模式(Facade)


    正确答案: C
    解析: 暂无解析

  • 第22题:

    问答题
    Decorator(装饰)模式的效果是什么?

    正确答案: 被添加的功能属于小的对象。好处是可以在Concrete Component对象的功能之前或之后动态添加功能。虽然一个装饰者可以在被装饰者之前或之后添加功能,但对象链总是以Concrete Component对象结束。
    解析: 暂无解析

  • 第23题:

    判断题
    Decorator(装饰)模式适用性是表示对象的部分-整体层次结构
    A

    B


    正确答案:
    解析: 暂无解析