Java内置观察者模式应用,观察者实现Observer接口,实现update()方法,被观察者会通过notifyObservers()方法通知每一个Observer的update()方法,在使用notifyObservers()方法时必须调用setChange()方法告诉被观察者数据发生了变化。
package com.depthmind.designpattern;
import java.util.Observable;
import java.util.Observer;
public class ObserverPattern {
public static void main(String[] args) {
Agency agency = new Agency();
DeveloperA developerA = new DeveloperA();
agency.addObserver(developerA);
Data data = new Data("lili", "192.168.1.1");
agency.doChange(data);
data = new Data("xiaoming", "192.168.1.2");
agency.doChange(data);
}
}
class DeveloperA implements Observer {
@Override
public void update(Observable o, Object arg) {
System.out.println(((Data) arg).getName() + "," + ((Data) arg).getIp());
}
}
class Agency extends Observable {
public void doChange(Object o) {
this.setChanged();
this.notifyObservers(o);
}
}
class Data {
private String name;
private String ip;
public Data(String name, String ip) {
this.name = name;
this.ip = ip;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
}