1、观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于他的对象都得到通知并被自动更新。
涉及到的都是类与类之间的关系,不涉及到继承,
实例一
//观察的主体
public interface Subject {
public void add(Observer observer);
public void del(Observer observer);
public void notifyObserver();
}
public class CommonSubject implements Subject {
private List<Observer> list = new ArrayList<Observer>();
@Override
public void add(final Observer observer) {
this.list.add(observer);
}
@Override
public void del(final Observer observer) {
this.list.remove(observer);
}
@Override
public void notifyObserver() {
for (final Observer o : this.list) {
o.update("notify ");
}
}
}
// 监听者对象
public interface Observer {
public void update(String text);
}
public class Child1 implements Observer {
@Override
public void update(final String text) {
System.out.println(" ~~~ Child1 update ~~~ : " + text);
}
}
public class Child2 implements Observer {
@Override
public void update(final String text) {
System.out.println(" ~~~ Child2 update ~~~ : " + text);
}
}
模拟调用:
public static void main(final String[] args) {
final Subject subject = new CommonSubject();
final Observer o1 = new Child1();
final Observer o2 = new Child2();
final Observer o3 = new Child1();
final Observer o4 = new Child2();
subject.add(o1);
subject.add(o2);
subject.add(o3);
subject.add(o4);
subject.del(o2);
subject.notifyObserver();
}