观察者模式
2017-06-30 22:19
92 查看
public interface Observer { public void update(int temp,int humidity,int pressure); } public interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); public void notifyObservers(); } public interface DisplayElement { public void display(); } public class WeaterData implements Subject{ private List<Observer> Observers; private int temp; private int humidity; private int pressure; public WeaterData(){ Observers =new ArrayList<Observer>(); } @Override public void registerObserver(Observer o) { Observers.add(o); } @Override public void removeObserver(Observer o) { int i = Observers.indexOf(o); if(i>0){ Observers.remove(i); } } @Override public void notifyObservers() { for(Observer o:Observers){ o.update(temp, humidity, pressure); } } public void change(){ notifyObservers(); } public void setMeasurements(int temp,int humidity,int pressure){ this.temp = temp; this.humidity = humidity; this.pressure=pressure; change(); } } public class WeaterData implements Subject{ private List<Observer> Observers; private int temp; private int humidity; private int pressure; public WeaterData(){ Observers =new ArrayList<Observer>(); } @Override public void registerObserver(Observer o) { Observers.add(o); } @Override public void removeObserver(Observer o) { int i = Observers.indexOf(o); if(i>0){ Observers.remove(i); } } @Override public void notifyObservers() { for(Observer o:Observers){ o.update(temp, humidity, pressure); } } public void change(){ notifyObservers(); } public void setMeasurements(int temp,int humidity,int pressure){ this.temp = temp; this.humidity = humidity; this.pressure=pressure; change(); } }public class CurrentDisplay implements Observer,DisplayElement{ private int temp; private int humidity; private int pressure; private Subject weaterdate; public CurrentDisplay(Subject weaterdate){ this.weaterdate = weaterdate; weaterdate.registerObserver(this); } @Override public void display() { System.out.println(toString()); } @Override public void update(int temp, int humidity, int pressure) { this.temp = temp; this.humidity =humidity; display(); } @Override public String toString() { return "CurrentDisplay [temp=" + temp + ", humidity=" + humidity + ", pressure=" + pressure + "]"; } } public class TestObserver { public static void main(String[] args) { WeaterData wd = new WeaterData(); CurrentDisplay cd = new CurrentDisplay(wd); wd.setMeasurements(1, 2, 3); wd.setMeasurements(4, 5, 6); } }
相关文章推荐
- 观察者设计模式
- AspectJ实现设计模式(一)——观察者模式
- 观察者(Observer)模式
- 探究观察者设计模式
- 探究观察者设计模式
- 设计模式理解 - 伟大的【Observer 观察者模式】
- 模式实践:观察者模式与Spring
- Observer Pattern(观察者模式)及其在C#中的实现
- Java设计模式之Observer(观察者)模式
- 设计模式之观察者模式(Observer Pattern)(一)
- 深入浅出观察者模式
- 观察者模式-新用模式
- 观察者模式
- 【 应用以及剖析】之 java.util.Observer 观察者模式实现
- 设计模式之观察者模式(Observer Pattern)(二)
- .NET中的设计模式五:观察者模式
- 观察者模式实践
- .net中的观察者模式(用delegate/event实现)
- 设计模式之观察者模式
- Java设计模式之Observer 观察者模式