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

题目

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


相似考题

2.阅读以下说明和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题:

    ● (44)模式通过提供与对象相同的接口来控制对这个对象的访问。

    (44)

    A.适配器( Adapter)

    B.代理(Proxy)

    C.组合( Composite)

    D.装饰器(Decorator)


    正确答案:B

  • 第2题:

    每个对象可用它自己的一组属性和它可以执行的一组(20)来表现。

    A.行为

    B.功能

    C.操作

    D.数据


    正确答案:C
    解析:在面向对象的系统中,对象是基本的运行时的实体,它既包括数据,也包括作用于数据的操作,所以一个对象的定义包括它的静态属性和动态操作的定义。

  • 第3题:

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

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


    正确答案:B,A

  • 第4题:

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

    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

  • 第5题:

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

    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)

  • 第6题:

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

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

    正确答案:D

  • 第7题:

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


    正确答案:错误

  • 第8题:

    关于【造型】系列功能说法正确的是()

    • A、根据选择对象顺序的不同而决定造型之后对象的属性
    • B、执行造型命令之后可能会合并成一个对象
    • C、执行造型命令之后只会生成一个对象
    • D、执行造型命令之后可能会形成3个以上的对象

    正确答案:A,B,D

  • 第9题:

    动力100业务包资费包括功能费和(),客户开通业务包或业务包中的产品当月收取功能费。当月15日之前(含15日)开通收取全月功能费;当月15日之后开通收取()功能费。


    正确答案:通信费;半月

  • 第10题:

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

    B


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

  • 第11题:

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

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

  • 第12题:

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

    B


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

  • 第13题:

    ● 欲动态地给一个对象添加职责,宜采用(46)模式。 A.适配器(Adapter) B.桥接(Bridge)C.组合( Composite) D.装饰器(Decorator)


    正确答案:D
    试题46分析适配器模式将一个接口转换成为客户想要的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。桥接模式将抽象部分与实现部分分离,使得它们两部分可以独立地变化。合成模式组合多个对象形成树型结构以表示整体—部分的结构层次。装饰器模式动态地给一个对象增加其他职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。参考答案(46)D

  • 第14题:

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

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

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

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

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


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

  • 第15题:

    下列关于C 函数的叙述中,正确的是( )。

    A.每个函数至少要具有一个参数

    B.每个函数都必须返回一个值

    C.函数在被调用之前必须先声明

    D.函数不能自己调用自己


    正确答案:C

  • 第16题:

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

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

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

  • 第17题:

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


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

  • 第18题:

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


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

  • 第19题:

    ()模式通过提供与对象相同的接口来控制对这个对象的访问。

    • A、适配器(Adapter)
    • B、代理(Proxy)
    • C、组合(Composite)
    • D、装饰器(Decorator)

    正确答案:B

  • 第20题:

    反复带来问题的组件通常执行下列哪几项功能?()

    • A、有害功能
    • B、过度的功能
    • C、不足的功能
    • D、附加功能

    正确答案:A,B,C

  • 第21题:

    表示为()

    • A、1号轴线之前的第一根附加轴线
    • B、1号轴线之后的第一根附加轴线
    • C、01号轴线之前的第一根附加轴线
    • D、01号轴线之后的第一根附加轴线

    正确答案:A

  • 第22题:

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

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

  • 第23题:

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

    B


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