(请作答此空)模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化。以下( )情况适合选用该模式。①一个客户需要使用一组相关对象②一个对象的改变需要改变其他对象③需要使用一个算法的不同变体④许多相关的类仅仅是行为有异A.命令(Command) B.责任链(ChainofResponsibility) C.观察者(Observer) D.策略(Strategy)

题目
(请作答此空)模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化。以下( )情况适合选用该模式。①一个客户需要使用一组相关对象②一个对象的改变需要改变其他对象③需要使用一个算法的不同变体④许多相关的类仅仅是行为有异

A.命令(Command)
B.责任链(ChainofResponsibility)
C.观察者(Observer)
D.策略(Strategy)

相似考题
更多“(请作答此空)模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化。以下( )情况适合选用该模式。①一个客户需要使用一组相关对象②一个对象的改变需要改变其他对象③需要使用一个算法的不同变体④许多相关的类仅仅是行为有异”相关问题
  • 第1题:

    一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。采用 (请作答此空) 模式,用一个中介对象来封装一系列的对象交互,从而使各对象不需要显式地相互引用,使其耦合松散,而且可以独立地改变它们之间的交互。此模式与 ( ) 模式是相互竞争的模式,主要差别是:前者的中介对象封装了其他对象间的通信,而后者通过引入其他对象来分布通信。

    A.解释器(Interpreter)
    B.策略(Strategy)
    C.中介者(Mediator)
    D.观察者(Observer)

    答案:C
    解析:
    中介者模式包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。在中介者模式中,所有的成员对象者可以协调工作,但是又不直接相互管理。这些对象都与一个处于中心地位的中介者对象发生紧密的关系,由这个中介者对象进行协调工作。这个协调者对象叫作中介者(Mediator),而中介者所协调的成员对象称作同事(Colleague)对象。
    在观察者模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。

  • 第2题:

    设计模式描述了一个出现在特定设计语境中的设计再现问题,并为它的解决方案提供了一个经过充分验证的通用方案,不同的设计模式关注解决不同的问题。例如,抽象工厂模式提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类,它是一种( )模式;(请作答此空)模式将类的抽象部分和它的实现部分分离出来,使它们可以独立变化,它属于( )模式;( )模式将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。

    A.Bridge
    B.Proxy
    C.Prototype
    D.Adapter

    答案:A
    解析:
    设计模式包括:创建型、结构型、行为型三大类别。抽象工厂模式属于创建型设计模式。桥接模式属于结构型设计模式。

  • 第3题:

    下面的UML类图描绘的是( )设计模式。关于该设计模式的叙述中,错误的是(请作答此空)。

    A.该设计模式中的Observer需要维护至少一个Subject对象
    B.该设计模式中的ConcreteObserver可以绕过Subject及其子类的封装
    C.该设计模式中一个Subject对象需要维护多个Observer对象
    D.该设计模式中Subject需要通知Observer对象其自身的状态变化

    答案:B
    解析:
    本题主要考查设计模式的相关知识。
    桥接模式将抽象部分与实现部分分离,使得它们两部分可以独立地变化。
    策略模式定义一系列的算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
    抽象工厂提供了一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
    观察者模式定义对象间的一种一对多依赖关系,使得每当一个对象改变状态,则其相关依赖对象皆得到通知并被自动更新。
    从本题给出的图我们可以判断是观察者模式,其中被观察对象(Subject),具体被观察对象(ConcreteSubject),观察者(Observer)及具体观察者(ConcreteObserver)。在本设计模式中,Observer需要维护至少一个Subject对象,一个Subject对象需要维护多个Observer对象,另外Subject需要通知Observer对象其自身的状态变化。

  • 第4题:

    ( )模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化

    A.命令(Command)
    B.责任链(ChainofResponsibility)
    C.观察者(Observer)
    D.策略(Strategy)

    答案:D
    解析:
    策模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换策模式让算法独立于使用它的客户而独立变化

  • 第5题:

    对于如下所示的序列图所描述的场景,最适合于采用的设计模式是(请作答此空);该模式适用的场合是( )。

    A.对象的行为决定于它的状态,且必须在运行时刻根据状态改变它的行为
    B.定义对象结构的类很少改变,但经常需要在此结构上定义新的操作
    C.需要使用一个算法的不同变体
    D.一个对象必须通知其它对象,而它又不能假定其它对象是谁

    答案:B
    解析:
    访问者(visitor)模式是一种对象的行为模式,用于表示一个作用于某对象结构中的各元素的操作,它使得用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式使得新的操作变得很容易,但在一定程度上破坏了封装性。

  • 第6题:

    已知一个类可以处理以英制标准(英寸、英里等)表示的数据,现在需要处理一公制单位表示的数据,则可以使用( )模式来解决该问题。当(请作答此空)时,可以使用该设计模式。

    A.对一个抽象的实现部分的修改对用户不产生影响
    B.想使用一个已经存在的类,而它的接口不符合用户需求
    C.一个系统要独立于它的产品创建、组合和表示
    D.一个对象的改变需要同时改变其他对象

    答案:B
    解析:
    Adapter的设计意图是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。Adapter模式适用于以下情况:想使用一个已经存在的类,而它的接口不符合要求。想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。仅适用于对象Adapter想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配它的父类接口。

  • 第7题:

    以下意图哪个是用来描述SINGLETON(单件)?()

    • A、将一个类的接口转换成客户希望的另外一个接口该模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
    • B、保证一个类仅有一个实例,并提供一个访问它的全局访问点
    • C、定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化
    • D、用一个中介对象来封装一系列的对象交互

    正确答案:B

  • 第8题:

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

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

    正确答案:B

  • 第9题:

    以下意图哪个是用来描述FACTORY METHOD(工厂方法)?()

    • A、提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
    • B、表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作
    • C、定义一个用于创建对象的接口,让子类决定实例化哪一个类。该模式使一个类的实例化延迟到其子类
    • D、定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化

    正确答案:C

  • 第10题:

    填空题
    Strategy意图是定义一系列的算法,把它们一个个()起来, 并且使它们可相互替换

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

  • 第11题:

    单选题
    以下意图哪个是用来描述命令模式()
    A

    将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化

    B

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

    C

    为其他对象提供一种代理以控制对这个对象的访问

    D

    保证一个类仅有一个实例,并提供一个访问它的全局访问点


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

  • 第12题:

    单选题
    以下意图哪个是用来描述策略模式()
    A

    将抽象部分与它的实现部分分离,使它们都可以独立地变化

    B

    将一个复杂对象的构建与它的表示分离

    C

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


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

  • 第13题:

    ( )模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化。以下(请作答此空)情况适合选用该模式。①一个客户需要使用一组相关对象②一个对象的改变需要改变其他对象③需要使用一个算法的不同变体④许多相关的类仅仅是行为有异


    A.①②
    B.②③
    C.③④
    D.①④

    答案:C
    解析:
    命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。责任链:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。策略模式:定义一系列的算法,把每一个算法封装起来,并且是它们可互相替换。本模式使得算法可独立于使用它的客户而变化。

  • 第14题:

    某模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化。以下( )情况适合选用该模式。
    ①一个客户需要使用一组相关对象
    ②一个对象的改变需要改变其它对象
    ③需要使用一个算法的不同变体
    ④许多相关的类仅仅是行为有异

    A.①②
    B.②③
    C.③④
    D.①④

    答案:C
    解析:
    策模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换策模式让算法独立于使用它的客户而独立变化
    应用场景:
    1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为
    2、 需要在不同情况下使用不同的策(算法),或者策还可能在未来用其它方式来实现
    3、 对客户隐藏具体策(算法)的实现细节,彼此完全独立

  • 第15题:

    设计模式描述了一个出现在特定设计语境中的设计再现问题,并为它的解决方案提供了一个经过充分验证的通用方案,不同的设计模式关注解决不同的问题。例如,抽象工厂模式提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类,它是一种( )模式;( )模式将类的抽象部分和它的实现部分分离出来,使它们可以独立变化,它属于(请作答此空)模式;( )模式将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。

    A.组合型
    B.结构型
    C.行为型
    D.创建型

    答案:B
    解析:
    设计模式包括:创建型、结构型、行为型三大类别。抽象工厂模式属于创建型设计模式。桥接模式属于结构型设计模式。

  • 第16题:

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

    A.将一个类的接口转换为客户期望的另一种接口,使得原本不匹配的接口而无法合作的类可以一起工作
    B.定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
    C.动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能
    D.为一个对象提供代理以控制该对象的访问

    答案:B
    解析:
    适配器模式:将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。装饰模式:指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。类之间的关系主要有以下几种:(1)继承关系:是指子类自动地具有其父类的全部属性与操作,也称为父类对子类的泛化。在UML建模语言中,采用空心三角形表示,从子类指向父类。(2)关联关系:是指两个或多个类之间的一种静态关系,表现为一个类是另一个类的成员变量。在UML类图中,双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头,带普通箭头的实心线指向被拥有者。(3)聚合关系:是整体与部分之间的关系,是强的关联关系。在UML中,聚合关系用带空心菱形的实心线,菱形指向整体。(4)依赖关系:也是类之间的一种静态关系,表现为一个类是另外一个类的局部变量。在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。

  • 第17题:

    对于如下所示的序列图所描述的场景,最适合于采用的设计模式是( );该模式适用的场合是(请作答此空)。

    A.对象的行为决定于它的状态,且必须在运行时刻根据状态改变它的行为
    B.定义对象结构的类很少改变,但经常需要在此结构上定义新的操作
    C.需要使用一个算法的不同变体
    D.一个对象必须通知其他对象,而它又不能假定其他对象是谁

    答案:B
    解析:
    访问者(Visitor)模式是一种对象的行为模式,用于表示一个作用于某对象结构中的各元素的操作,它使得用户可以在不改变各元素的类的前提下,定义作用于这些元素的新操作。访问者模式使得新的操作变得很容易,但在一定程度上破坏了封装性。

  • 第18题:

    对于如下所示的序列图所描述的场景,最适合于采用的设计模式是(30);该模式适用的场合是(31)。

    A.对象的行为决定于它的状态,且必须在运行时刻根据状态改变它的行为
    B.定义对象结构的类很少改变,但经常需要在此结构上定义新的操作
    C.需要使用一个算法的不同变体
    D.一个对象必须通知其它对象,而它又不能假定其它对象是谁

    答案:B
    解析:
    访问者(visitor)模式是一种对象的行为模式,用于表示一个作用于某对象结构中的各元素的操作,它使得用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式使得新的操作变得很容易,但在一定程度上破坏了封装性。

  • 第19题:

    以下意图哪个是用来描述COMMAND(命令)?()

    • A、将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作
    • B、定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化
    • C、为其他对象提供一种代理以控制对这个对象的访问
    • D、保证一个类仅有一个实例,并提供一个访问它的全局访问点

    正确答案:A

  • 第20题:

    关于模式适用性,在以下情况可以使用builder模式?()

    • A、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
    • B、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时
    • C、当构造过程必须允许被构造的对象有不同的表示时
    • D、一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为

    正确答案:B

  • 第21题:

    单选题
    关于模式适用性,在以下情况可以使用builder模式?()
    A

    当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时

    B

    当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时

    C

    当构造过程必须允许被构造的对象有不同的表示时

    D

    一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为


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

  • 第22题:

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

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

    B

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

    C

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

    D

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


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

  • 第23题:

    单选题
    关于模式适用性,在以下情况不适合使用STRATEGY(策略)模式?()
    A

    当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之,你不希望这些对象是紧密耦合的

    B

    许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法

    C

    需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时可以使用策略模式

    D

    算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构


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