名称:观察者模式(Observer Pattern)
问题:Observer pattern defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. It is also referred to as the publish-subscribe pattern.
解决方案:
1、 模式的参与者1、Subject -目标知道它的观察者。可以有任意多个观察者观察同一个目标。 -提供注册和删除观察者对象的接口。 2、Observer -为那些在目标发生改变时需获得通知的对象定义一个更新接口。 3、ConcreteSubject -将有关状态存入各ConcreteObserver对象。 -当它的状态发生改变时,向他的各观察者发出通知。 4、ConcreteObserver -维护一个指向ConcreteSubject对象的引用。 -存储有关状态,这些状态应与目标的状态保持一致。 -实现Observer的更新接口以使自身状态与目标的状态保持一致。
2.实现方式
abstract class Subject { protected List<Observer> observers=new ArrayList<Observer>(); public void add(Observer observer) { observers.add(observer); } public void remove(Observer observer) { observers.remove(observer); } public abstract void notifyObserver(); } class ConcreteSubject extends Subject { public void notifyObserver() { for(Object obs:observers) { ((Observer)obs).response(); } } } interface Observer { void response(); } class ConcreteObserver1 implements Observer { public void response() { System.out.println("Observer1 action"); } } class ConcreteObserver2 implements Observer { public void response() { System.out.println("Observer2 action"); } }
参考资料《设计模式:可复用面向对象软件的基础》 |
|
来自: 昵称70680357 > 《待分类》