观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
设计原则:为了对象之间的松耦合设计而努力。
松耦合设计之所以能让我们建立有弹性的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); } }
相关推荐
Qt设计模式之观察者模式
采用Java语言编写的一个观察者模式实例。观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,...
java观察者模式观察者模式java观察者模式观察者模式java观察者模式观察者模式
观察者模式及实例,适合初学者阅读 。。。。。。。。。。。。。。。
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件...
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者...
观察者模式
java 设计模式 观察者模式 简单实例 包括测试test类
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式
设计模式之观察者模式Java版本实现和UML类设计图
设计模式-观察者模式(讲解及其实现代码)
设计模式--观察者模式java例子
运用观察者模式及MVC模式的整合,是javaWeb的简单的实现了选民投票
观察者模式Demo,设计模式,观察者模式
观察者模式使用
iOS 设计模式 观察者模式
观察者模式小型框架
56丨观察者模式(上):详解各种应用场景下观察者模式的不同实现方式1
面向对象23种设计模式之观察者模式,简单明了。面向对象23种设计模式之观察者模式,简单明了。