举个例子:
出版社订阅报纸就是观察者模式;
1, 出版者一旦有新的报纸,就必须发送给订阅了报纸的对象;
2, 已订阅的人可以取消订阅报纸,同时不会再接收到报纸;
3, 任何人可以申请订阅报纸,申请后就会收到报纸;
观察者模式:定义了对象之间的一(出版社)对多(订报者)依赖,这样依赖,当一个对象(出版社来报纸了)改变状态时,它的所有的依赖者都会收到通知并自动更新;
设计原则:
1. 找出程序中会变化的方面,然后将其和固定不变的方面分离开;
2. 针对接口编程,不针对实现编程;
3. 多用组合,少用继承;
针对以上问题,有如下设计图:
实现如下所示:
主题(出版社的基类):
interface Subject{
public void registerObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObservers