观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
设计原则:为了对象之间的松耦合设计而努力。
松耦合设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的互相依赖降到了最低。
关于观察者的一切,主题只知道观察者实现了某个接口。主题不需要知道观察者的具体类是谁,做了些什么或其他任何细节。
最后的例子就是订阅报纸,只要你订购了报纸,就会每天有人给你送报纸。
在设计的时候,被观察者被称为主题,主题应该有的动作是:①:增加观察者,②:删除观察者,③:通知观察者。
而在具体的观察者中只需要拥有更新和显示的操作就可以了。
public interface Subject { public abstract void addObserver(Observer o); public abstract void removeObserver(Observer o); public abstract void notifyObserver(); }
import java.util.ArrayList; public class ConcreteSubject implements Subject{ private ArrayList observers; private double temp; private double humidity; private double pressure; public ConcreteSubject(){ observers=new ArrayList<Observer>(); } public void addObserver(Observer o){ observers.add(o); } public void removeObserver(Observer o){ int i=observers.indexOf(o); if(i>=0){ observers.remove(i); } } public void notifyObserver(){ for(int i=0;i<observers.size();i++){ Observer observer=(Observer)observers.get(i); observer.update(temp, humidity, pressure); } } public void measurementsChanged(){ notifyObserver(); } public void setMeasurements(double temp,double humidity,double pressure){ this.temp=temp; this.humidity=humidity; this.pressure=pressure; } }
public interface Observer { public void update(double temp,double humidity,double pressure); }
public class CurrentDisplay implements Observer{ private double temp; private double humidity; private ConcreteSubject concreteSubject; public CurrentDisplay(ConcreteSubject concreteSubject){ this.concreteSubject=concreteSubject;//为了删除观察者准备 concreteSubject.addObserver(this); } public void update(double temp,double humidity,double pressure){ this.temp=temp; this.humidity=humidity; display(); } public void display(){ System.out.println(this.temp+"-----"+this.humidity); } }
相关推荐
观察者模式是一种行为设计模式,它允许你定义一个订阅机制,可以在对象事件发生时通知多个“观察”该对象的其他对象。这个模式的核心在于建立一种一对多的关系,当一个对象的状态改变时,所有依赖于它的对象都会得到...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现发布-订阅...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...
本篇文章将深入探讨Qt中的观察者模式(Observer Pattern),这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心...
观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...
观察者模式,也被称为发布-订阅模式,是软件设计中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在分布式系统、事件驱动...