观察者模式
来源:互联网 发布:淘宝卫浴好店 编辑:程序博客网 时间:2024/06/08 19:59
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>();}@Overridepublic void registerObserver(Observer o) {Observers.add(o);}@Overridepublic void removeObserver(Observer o) {int i = Observers.indexOf(o);if(i>0){Observers.remove(i);}}@Overridepublic 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>();}@Overridepublic void registerObserver(Observer o) {Observers.add(o);}@Overridepublic void removeObserver(Observer o) {int i = Observers.indexOf(o);if(i>0){Observers.remove(i);}}@Overridepublic 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);}@Overridepublic void display() {System.out.println(toString());}@Overridepublic void update(int temp, int humidity, int pressure) {this.temp = temp;this.humidity =humidity;display();}@Overridepublic 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);}}
阅读全文
0 0
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- python_二进制转换
- Supervisor+Celery+Redis+gevent出现missed hearbeat
- python爬虫(三)
- 2016小米-小米Git-Java
- 解决Mysql错误[1040]Too many connections
- 观察者模式
- [UVA1626]Brackets sequence(dp)
- ubuntu17.04 Linux install xmapp zentao
- OkHttp Wiki翻译(四)使用说明
- midio驱动
- LeetCode 3. Longest Substring Without Repeating Characters [Medium]
- Java 代码规范,你应该知道的一些工具和用法
- 数据库更新总结
- python中join()函数讲解