描述:每当一个对象改变状态,所有依赖于它的对象都会得到通知并自动更新。 (发布和订阅,将观察者和被观察者解耦)
观察者:
public class TestObserver implements Observer{
private String mStr;
public TestObserver(String str) {
mStr= str;
}
@Override
public void update(Observable o, Object arg) {
System.out.println(mStr+ ":" + arg);
}
}
被观察者:
public class TestObservable extends Observable{
public void sendChangeMeg(String content) {
//继承自Observable,表示状态或是内容发生改变
setChanged();
//继承自Observable,通知所有观察者,最后会调用每个Observer的update方法
notifyObservers(content);
}
}
调用:
public class Test {
@Test
public void test1() throws Exception {
TestObservable myObservable = new TestObservable();
TestObserver observer1 = new TestObserver("observer1");
TestObserver observer2 = new TestObserver("observer2");
myObservable.addObserver(observer1 );
myObservable.addObserver(observer2 );
//发布消息
myObservable.sendChangeMeg("更新");
}
}