单选题当不适合采用生成子类的方法对已有的类进行扩充时,可以采用(1)设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用(2)设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用(3)设计模式将该类的接口转换成我们希望的接口。空白(3)处应选择()A命令(CommanD)B适配器(Adapter)C装饰(DecoratE)D享元(Flyweight)

单选题
当不适合采用生成子类的方法对已有的类进行扩充时,可以采用(1)设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用(2)设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用(3)设计模式将该类的接口转换成我们希望的接口。空白(3)处应选择()
A

命令(CommanD)

B

适配器(Adapter)

C

装饰(DecoratE)

D

享元(Flyweight)


参考解析

解析: 本题考查面向对象设计。装饰模式主要的目的是在无法生成子类的情况下给一个对象动态地增加新的职责;享元设计模式是共享大量细粒度的对象;适配器设计模式则是将已有的接口转换为系统希望的接口形式。

相关考题:

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

● 采用 (43) 设计模式可保证一个类仅有一个实例;采用 (44) 设计模式可将对象组合成树形结构以表示“部分-整体”的层次结构, 使用户对单个对象和组合对象的使用具有一致性;采用 (45) 设计模式可动态地给一个对象添加一些额外的职责。(43)A. 命令(Command) B. 单例(Singleton) C. 装饰(Decorate) D. 组合(Composite)(44)A. 命令(Command) B. 单例(Singleton) C. 装饰(Decorate) D. 组合(Composite)(45)A. 命令(Command) B. 单例(Singleton) C. 装饰(Decorate) D. 组合(Composite)

采用( )设计模式可保证一个类仅有一个实例;采用( )设计模式可将对象组合成树形结构以表示“部分一整体”的层次结构,使用户对单个对象和组合对象的使用具有一致性;采用( )设计模式可动态地给一个对象添加一些额外的职责。A.命令(Command)B.单例(Singleton)C.装饰(Deeorate)D.组合(Composite)(44)

当不适合采用生成子类的方法对已有的类进行扩充时,可以采用( )没计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用( )设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用( )设计模式将该类的接口转换成我们希望的接口。A.命令(Command)B.适配器(Adapter)C.装饰(Decorate)D.享元(Flyweight)

● 已知某子系统为外界提供功能服务,但该子系统中存在很多粒度十分小的类,不便被外界系统直接使用,采用(41)设计模式可以定义一个高层接口,这个接口使得这一子系统更加容易使用;当不能采用生成子类的方法进行扩充时,可采用(42)设计模式动态地给一个对象添加一些额外的职责。(41)A. Facade(外观)B. Singleton(单件)C. Participant(参与者)D. Decorator(装饰)(42)A. Facade(外观)B. Singleton(单件)C. Participant(参与者)D. Decorator(装饰)

● 下面给出了四种设计模式的作用: 外观(Fa?ade) :为子系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用; 装饰(Decorate):当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能; 单件(Singleton) :保证一个类仅有一个实例,并提供一个访问它的全局访问点; 模板方法(Template Method) :在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。 请根据下面叙述的场景选用适当的设计模式。若某面向对象系统中的某些类有且只有一个实例,那么采用(30) 设计模式能够有效达到该目的;该系统中的某子模块需要为其他模块提供访问不同数据库系统(Oracle、SQL Server、DB2 UDB 等)的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库、再打开数据库、最后对数据进行查询,(31) 设计模式可抽象出相同的数据库访问过程;系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条、或者带有黑色边框、或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加三个类,(32) 设计模式可以实现该目的。(30)A. 外观 B. 装饰 C. 单件 D. 模板方法(31)A. 外观 B. 装饰 C. 单件 D. 模板方法(32)A. 外观 B. 装饰 C. 单件 D. 模板方法

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

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

Decorator模式的结构图如图13-4所示。关于其说法不正确的是(50)。A.动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。B.在不影响其它对象的情况下,以动态、透明的方式给单个对象添加职责。C.Decorator模式的两个主要优点是:比静态继承更灵活,避免在层次结构高层的类有太多的特征。D.Decorator模式是一种行为模式。

已知某子系统为外界提供功能服务,但该子系统中存在很多粒度十分小的类,不便被外界系统直接使用,采用(41)设计模式可以定义一个高层接口,这个接口使得这一子系统更加容易使用;当不能采用生成子类的方法进行扩充时,可采用(42)设计模式动态地给一个对象添加一些额外的职责。A.Facade(外观)B.Singleton(单件)C.Participant(参与者)D.Decorator(装饰)

● 当不适合采用生成子类的方法对已有的类进行扩充时,可以采用 (43) 设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用 (44) 设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用 (45) 设计模式将该类的接口转换成我们希望的接口。(43)A. 命令(Command)B. 适配器(Adapter)C. 装饰(Decorate)D. 享元(Flyweight)(44)A. 命令(Command)B. 适配器(Adapter)C. 装饰(Decorate)D. 享元(Flyweight)(45)A. 命令(Command)B. 适配器(Adapter)C. 装饰(Decorate)D. 享元(Flyweight)

下图是( )设计模式的类图,该设计模式的目的是(请作答此空),图中,ConcreteCommand和Command之间是( )关系,Invoker和Command之间是( )关系。A.将一个请求封装成一个对象,从而使得可以用不同的请求对客户进行参数化,队请求排队或记录请求日志,以及支持可撤销的操作B.将一个类的接口适配成用户所期待的C.动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能D.为一个对象提供代理以控制该对象的访问

( )设计模式能够动态地给一个对象添加一些额外的职责而无需修改此对象的结构A.组合(Composite) B.外观(Facade) C.享元(Flyweight) D.装饰器(Decorator)

( )设计模式能够动态地给一个对象添加一些额外的职责而无须修改此对象的结构;( )设计模式定义一个用于创建对象的接口,让子类决定实例化哪一个类;欲使一个后端数据模型能够被多个前端用户界面连接,采用(请作答此空)模式最适合。A. 装饰器B. 享元C. 观察者D. 中介者

( )设计模式能够动态地给一个对象添加一些额外的职责而无须修改此对象的结构;(请作答此空)设计模式定义一个用于创建对象的接口,让子类决定实例化哪一个类;欲使一个后端数据模型能够被多个前端用户界面连接,采用()模式最适合。A. 工厂方法B. 享元C. 观察者D. 中介者

(请作答此空)设计模式能够动态地给一个对象添加一些额外的职责而无须修改此对象的结构;()设计模式定义一个用于创建对象的接口,让子类决定实例化哪一个类;欲使一个后端数据模型能够被多个前端用户界面连接,采用()模式最适合。A. 组合B. 外观C. 享元D. 装饰器

外观模式,当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。

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

关于模式适用性,在以下情况不适合使用DECORATOR(装饰)模式?()A、在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责B、处理那些可以撤消的职责C、客户程序与抽象类的实现部分之间存在着很大的依赖性D、当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类

以下不适合使用装饰模式的是()A、装饰某个对象时需要修改该类的对象B、在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责C、需要动态地给一个对象增加功能,这些功能也可以动态地被撤销D、当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时E、只需要对某个对象进行外观修饰而不需要修改其内在属性时

关于模式适用性,在以下情况不适合使用FACTORY METHOD模式?()A、当一个类不知道它所必须创建的对象的类的时候B、当一个类希望由它的子类来指定它所创建的对象的时候C、当你提供一个产品类库,而只想显示它们的接口而不是实现时D、当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候

判断题外观模式,当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。A对B错

单选题以下不适合使用装饰模式的是()A装饰某个对象时需要修改该类的对象B在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责C需要动态地给一个对象增加功能,这些功能也可以动态地被撤销D当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时E只需要对某个对象进行外观修饰而不需要修改其内在属性时

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

单选题关于模式适用性,在以下情况不适合使用DECORATOR(装饰)模式?()A在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责B处理那些可以撤消的职责C客户程序与抽象类的实现部分之间存在着很大的依赖性D当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类

单选题当不适合采用生成子类的方法对已有的类进行扩充时,可以采用(1)设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用(2)设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用(3)设计模式将该类的接口转换成我们希望的接口。空白(1)处应选择()A命令(CommanD)B适配器(Adapter)C装饰(DecoratE)D享元(Flyweight)

填空题()模式可以动态地给一个对象增加一些额外的职责。