观察者(Observer)模式适用于( )。A.访问一个聚合对象的内容而无须暴露它的内部表示*B.减少多个对象或类之间的通信复杂性C.将对象的状态恢复到先前的状态D.一对多对象依赖关系,当一个对象修改后,依赖它的对象都自动得到通知

题目
观察者(Observer)模式适用于( )。

A.访问一个聚合对象的内容而无须暴露它的内部表示*

B.减少多个对象或类之间的通信复杂性

C.将对象的状态恢复到先前的状态

D.一对多对象依赖关系,当一个对象修改后,依赖它的对象都自动得到通知


相似考题
更多“观察者(Observer)模式适用于( )。 ”相关问题
  • 第1题:

    图4-6示意的为(48)设计模式,表示一个作用于某对象结构中的各元素的操作。

    A.Visitor(访问者)

    B.Observer(观察者)

    C.Flyweight(享元)

    D.Prototype(原型)


    正确答案:A
    解析:图4-6示意的Visitor(访问者)模式,其设计意图是:表示一个作用于某对象结构中的各元素的操作。它可在不改变各元素的类的前提下定义作用于这些元素的新操作。

  • 第2题:

    阅读下列说明和Java代码,将应填入 (n)处的字句卸载答题纸的对应栏内. 【说明】 某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新。 现在采用观察者(Observer)模式来开发该系统。观察者模式的类图如图6-1所示。

    【Java代码】 import java.util.*; interface Observer { public void update(float temp, float humidity, float cleanness); } interface Subject { public void registerObserver(Observer o); //注册对主题感兴趣的观察者 public void removeObserver(Observer o); //删除观察者 public void notifyObservers(); //当主题发生变化时通知观察者 } class EnvironmentData implements (1) { private ArrayList observers; private float temperature, humidity, cleanness; public EnvironmentData() { observers = new ArrayList(); } public void registerObserver(Observer o) { observers.add(o); } public void removeObserver(Observer o) { /* 代码省略 */ } public void notifyObservers() { for (int i = 0; i < observers.size(); i++) { Observer observer = (Observer)observers.get(i); (2) ; } } public void measurementsChanged() { (3) ; } public void setMeasurements(float temperature, float humidity, float cleanness) { this.temperature = temperature; this.humidity = humidity; this.cleanness = cleanness; (4) ; } } class CurrentConditionsDisplay implements (5) { private float temperature; private float humidity; private float cleanness; private Subject envData; public CurrentConditionsDisplay(Subject envData) { this.envData = envData; (6) ; } public void update(float temperature, float humidity, float cleanness) { this.temperature = temperature; this.humidity = humidity; this.cleanness = cleanness; display(); } public void display() {/* 代码省略 */ } } class EnvironmentMonitor{ public static void main(String[] args) { EnvironmentData envData = new EnvironmentData(); CurrentConditionsDisplay currentDisplay = new CnrrentConditionsDisplay(envData); envData.setMeasurements(80, 65, 30.4f); } }


    正确答案:

    (1)Subject
    (2)observer.update(temperature,humidity,cleanness)
    (3)notifyObservers()
    (4)measurementsChanged()
    (5)Observer
    (6)envData.registerObserver(this)


  • 第3题:

    ( )设计模式定义一个用于创建对象的接口,让子类决定实例化哪一个类

    A.工厂方法(FactoryMethod)
    B.享元(Flyweight)
    C.观察者(Observer)
    D.中介者(Mediator)

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

  • 第4题:

    阅读下列说明和C++代码,回答问题,将答案填入相应横线处。【说明】某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新现在采用观察者(observer)模式来开发该系统,观察者模式的类图如下图所示。



    ?【C++代码】#include #include using namespace std;class Observer {public:????virtual void update(float temp, float humidity, float cleanness)=0;};class Subject {public:????virtual void registerObserver(Observer* o) = 0; //注册对主题感兴趣的观察者????virtual void removeObserver(Observer* o) = 0; //删除观察者????virtual void notifyObservers() = 0;//当主题发生变化时通知观察者};class EnvironmentData : public?????(1) ????{private:vector observers;float temperature, humidity, cleanness;public:????void registerObserver(Observer* o) { observers.push_back(o); }????void removeObserver(Observer* o) { /* 代码省略 */ }????void notifyObservers() {for(vector::const_iterator it = observers.begin(); ???????????it != observers.end(); it++){???????(2) ???; }}Void measurementsChanged() {?????(3) ???; }void setMeasurements(float temperature, float humidity, float cleanness) {????this->temperature = temperature;????this->humidity = humidity;????this->cleanness = cleanness;????????(4) ???;????}};class CurrentConditionsDisplay : public?????(5) ???{private: ?????float temperature, humidity, cleanness;????Subject* envData;public:????CurrentConditionsDisplay(Subject* envData) {????????this->envData = envData;???????????(6) ??; ??????}void update(float temperature, float humidity, float cleanness) ?{this->temperature = temperature;????this->humidity = humidity;????this->cleanness = cleanness;????display();}void display() { /* 代码省略 */ }};int main() {????EnvironmentData* envData = new EnvironmentData();????CurrentConditionsDisplay* currentDisplay = new CurrentConditionsDisplay(envData);????envData->setMeasurements(80, 65, 30.4f);????return 0;}


    答案:
    解析:
    1、Subject[解析] 当主题中的环境发生变化,也就是调用measure-mentsChanged(),会通知观察者,即调用notifyObservers(),在notifyObservers()方法中,观查者会调用自身的up-date(float temperature,float humidity,float cleanness)。在主题的registerObserver(Observe*o)中会注册对主题感兴趣的观察者。
    2、(*it)->update(temperature,humidity,clean-ness)
    3、notifyObservers()     4、measurementsChanged()
    5、Observer()     6、this->envData->registerObserver(this)    

  • 第5题:


    A.代理(Proxy)
    B.生成器(Builder)
    C.组合(Composite)
    D.观察者(Observer)

    答案:C
    解析:

    选项A代理(Proxy)模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候,常见情况有:远程代理 (Remote Proxy) 为一个对象在不同地址空间提供据不代表;虚代理 (Virtual Proxy) 根据需要创建开销很大的对象;保护代理 (Protection Proxy) 控制对原 始对象的访问,用于对象应该有不同的访问权限的时候;智能指引 (Smart Reference) 取代了简单的指针,它在访问对象时执行一些附加操作。

    选项B生成器/建造者(Builder)模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    选项C组合(Composite)模式。将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。

    选项D观察者(Observer)模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。发生改变的对象称为观察目标,被通知的对象称为观察者。一个观察目标可以对应多个观察者。

  • 第6题:

    异常处理机制可理解为哪一种行为模式()

    • A、观察者(Observer)模式
    • B、迭代器(Iterator)模式
    • C、职责链(Chain of Responsibility)模式
    • D、策略(Strategy)模式

    正确答案:C

  • 第7题:

    以下属于行为对象模式的是()

    • A、模板(Template Method)模式
    • B、迭代器(Iterator)模式
    • C、命令(Command)模式
    • D、观察者(Observer)模式

    正确答案:A,B,C,D

  • 第8题:

    一个web网站可以同时拥有针对电脑的Html页面和针对手机的WAP页面。这属于的模式是()

    • A、观察者(observer)模式
    • B、命令(commanD.模式
    • C、单一(singleton)模式
    • D、代理(proxy)模式

    正确答案:A

  • 第9题:

    单选题
    异常处理机制可理解为哪一种行为模式()
    A

    观察者(Observer)模式

    B

    迭代器(Iterator)模式

    C

    职责链(Chain of Responsibility)模式

    D

    策略(Strategy)模式


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

  • 第10题:

    多选题
    以下属于结构型模式的是()。
    A

    代理(Proxy)模式

    B

    合成(Composite)模式

    C

    命令(Command)模式

    D

    观察者(Observer)模式


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

  • 第11题:

    单选题
    Java的异常处理机制可理解为哪一种行为模式()
    A

    观察者(Observer)模式

    B

    迭代器(Iterator)模式

    C

    职责链(Chain of Responsibility)模式

    D

    策略(Strategy)模式


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

  • 第12题:

    单选题
    封装分布于多个类之间的行为的模式是()
    A

    观察者(Observer)模式

    B

    迭代器(Iterator)模式

    C

    访问者(Visitor)模式

    D

    策略(Strategy)模式


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

  • 第13题:

    设计模式允许一个对象在其状态改变时,通知依赖它的所有对象。该设计模式的类图如下图,其中, (68)在其状态发生改变时,向它的各个观察者发出通知。

    A.命令( Command)

    B.责任链(Chain of Responsibility)

    C.观察者( Observer)

    D.迭代器(Iterator)


    正确答案:C
    观察者模式的意图是:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式类图中,Subject是被观察对象,了解其多个观察者,任意数量的观察者可以观察一个对象,提供一个接口用来绑定以及分离观察者对象。ConcreteSubject是具体被观察对象,存储具体观察者ConcreteObserver有兴趣的状态。当其状态改变时,发送一个通知给其所有的观察者对象。Observer是观察者,定义一个更新接口,在一个被观察对象改变时应被通知。ConcreteObserver是具体观察者,维护一个对ConcreteSubject对象的引用。

  • 第14题:

    一个web网站可以同时拥有针对电脑的Html页面和针对手机的WAP页面。这属于的模式是()

    A.观察者(observer)模式

    B.命令(commanD.模式

    C.单一(singleton)模式

    D.代理(proxy)模式


    参考答案:A

  • 第15题:

    下图所示为(44)设计模式,属于(45)设计模式,适用于(46)。

    A.代理(Proxy)
    B.生成器(Builder)
    C.组合(Composite)
    D.观察者(Observer)

    答案:C
    解析:
    本题考查面向对象设计模式知识点设计模式是一套被反复使用、经过分类编目的代码设计经验的总结使用设计模式是为了复
    用成功的设计和体系结构、复用相似问题的相同解决方案,保证代码可靠性,使代码编制真正工程化,能够适应需求的变化共有23种设计模式
    组合(Composite)模式将对象组合成树形结构以表示“部分-整体”的层次结构它使得客户对单个对象和复合对象的使用具有一致性
    设计模式有如下的分类:
    1.创建型模式单独对对象的创建进行研究,从而能够高效地创建对象6个创建型模式:简单工厂模式(SimpleFactory)、工厂方法模式(FactoryMethod)、抽象工厂模式(AbstractFactory)、创建者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)
    2.结构型模式研究对象的组成以及对象之间的依赖关系,如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等有7个具体的结构型模式可供研究,它们分别是:外观模式(Facade)、适配器模式(Adapter)、代理模式(Proxy)、装饰模式(Decorator)、桥接模式(Bridge)、组合模式(Composite)、享元模式(Flyweight)
    3.行为型模式行为型设计模式是对对象的行为进行研究,它们分别是:模板方法模式(TemplateMethod)、观察者模式(Observer)、状态模式(State)、策模式(Strategy)、职责链模式(ChainofResponsibility)、命令模式(Command)、访问者模式(Visitor)、调停者模式(Mediator)、备忘录模式(Memento)、迭代器模式(Iterator)、解释器模式(Interpreter)
    从本题图中可看出,类Leaf表示叶子节点(部分节点),类Composite表示组合节点(整体节点),它们同时继承于父类Component,同时实现了相同的操作Operation,这使得客户对单个对象(Leaf类对象)和复合对象(Composite类对象)的使用具有一致性,试题(44)选择C选项组合模式将对象组合成树形结构以表示“部分-整体”的层次结构关系

  • 第16题:

    欲使一个后端数据模型能够被多个前端用户界面连接,采用( )模式最适合

    A.装饰器(Decorator)
    B.享元(Flyweight)
    C.观察者(Observer)
    D.中介者(Mediator)

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

  • 第17题:

    以下属于结构型模式的是()。

    • A、代理(Proxy)模式
    • B、合成(Composite)模式
    • C、命令(Command)模式
    • D、观察者(Observer)模式

    正确答案:A,B

  • 第18题:

    封装分布于多个类之间的行为的模式是()

    • A、观察者(Observer)模式
    • B、迭代器(Iterator)模式
    • C、访问者(Visitor)模式
    • D、策略(Strategy)模式

    正确答案:C

  • 第19题:

    Java的异常处理机制可理解为哪一种行为模式()

    • A、观察者(Observer)模式
    • B、迭代器(Iterator)模式
    • C、职责链(Chain of Responsibility)模式
    • D、策略(Strategy)模式

    正确答案:C

  • 第20题:

    关于观察者模式说法正确的是?()

    • A、观察者(Observer)模式,也叫发布/订阅(Publish/SubscribE.模式。
    • B、是MVC(模型-视图-控制器)模式的重要组成部分。
    • C、复用性强。
    • D、对象之间实名通信。

    正确答案:A,B

  • 第21题:

    填空题
    Java-API中,有两个与观察者模式相关的类和接口,分别是Observable和Observer,Observer的Update函数中用到的两个参数的参数类型是()和()。

    正确答案: Observable,Object
    解析: 暂无解析

  • 第22题:

    多选题
    以下属于行为对象模式的是()
    A

    模板(Template Method)模式

    B

    迭代器(Iterator)模式

    C

    命令(Command)模式

    D

    观察者(Observer)模式


    正确答案: A,D
    解析: 暂无解析

  • 第23题:

    多选题
    关于观察者模式说法正确的是?()
    A

    观察者(Observer)模式,也叫发布/订阅(Publish/SubscribE.模式。

    B

    是MVC(模型-视图-控制器)模式的重要组成部分。

    C

    复用性强。

    D

    对象之间实名通信。


    正确答案: D,A
    解析: 暂无解析

  • 第24题:

    单选题
    一个web网站可以同时拥有针对电脑的Html页面和针对手机的WAP页面。这属于的模式是()
    A

    观察者(observer)模式

    B

    命令(commanD.模式

    C

    单一(singleton)模式

    D

    代理(proxy)模式


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