参考答案和解析
正确答案:D
解析:观察者(Observer)模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。例如对同一组数据进行统计分析时候,可能希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等),这些表示都依赖于同一组数据;当数据改变的时候,所有的统计的显示都能够同时改变。因为观察者是依赖于目标对象的,Observer类可以有多个(ConcreteObserver子类;每个子类都依赖于某个目标对象的子类(ConcreteSubject,所以说Observer需要维护至少一个Subject对象。而(ConcreteObserver对象维护一个指向(ConcreteSubject对象的引用,所以不能绕过Subject子类的封装。
更多“ 下面的UML类图描绘的是(46)设计模式。关于该设计模式的叙述中,错误的是(47)。(56)A.桥接B.策略C.抽象工厂 观察者 ”相关问题
  • 第1题:

    如下UML类图表示的是 (44) 设计模式。以下关于该设计模式的叙述中,A.工厂方法B.策略S

    如下UML类图表示的是 (44) 设计模式。以下关于该设计模式的叙述中,

    A.工厂方法

    B.策略

    C.抽象工厂

    D.观察者


    正确答案:C
    本题考查面向对象方法中的设计模式知识。题中的类图是抽象工厂设计模式,该设计模式的意图是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。使用抽象工厂设计模式的常见情形是:一个系统要独立于其产品的创建、组合和表示时;一个系统要由多个产品系列中的一个来配置时;当需要强调一系列相关的产品对象的设计以便进行联合使用时;当提供一个产品类库,而只想显示它们的接口不是实现时。对于希望使用已经存在的类,但其接口不符合需求的情形,应当考虑桥接设计模式。

  • 第2题:

    下面的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对象其自身的状态变化。

  • 第3题:

    如下UML类图表示的是(请作答此空)设计模式。以下关于该设计模式的叙述中,错误是( )。

    A.工厂方法
    B.策略
    C.抽象工厂
    D.观察者

    答案:C
    解析:
    本题考查面向对象方法中的设计模式知识。
    题中的类图是抽象工厂设计模式,该设计模式的意图是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。使用抽象工厂设计模式的常见情形是:一个系统要独立于其产品的创建、组合和表示时;一个系统要由多个产品系列中的一个来配置时;当需要强调一系列相关的产品对象的设计以便进行联合使用时;当提供一个产品类库,而只想显示它们的接口不是实现时。对于希望使用已经存在的类,但其接口不符合需求的情形,应当考虑适配器设计模式。

  • 第4题:

    如下UML类图表示的是(43)设计模式。以下关于该设计模式的叙述中,错误的是(44)。

    (54)

    A.工厂方法

    B.策略

    C.抽象工厂

    D.观察者


    正确答案:C
    解析:抽象工厂模式是一种常见的没计模式,它为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对系的系列来创建一个具体的工厂类别。
    抽象工厂模式针对的是多个产品等级结果。产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。当有多个不同的等级结构的产品时,如果使用工厂方法模式就势必要使用多个独立的工厂等级结构来对付产品的等级结构。如果这些产品等级结构是平行的,会导致多个平行的工厂等级结构。抽象工厂模式使用同一个工厂等级结构负责不同产品等级结构产品对象的创建。

  • 第5题:

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

    A.桥接
    B.策略
    C.抽象工厂
    D.观察者

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