定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的依赖者都会收到通知并自动更新。
模式结构
以Netty为例列举下它所包含的结构。
观察者模式角色 |
Netty中的对应实现 |
Subject |
ChannelFuture/Future |
Observer |
GenericFutureListener/ChannelFutureListener |
注册观察者方法 |
addListener() |
通知观察者方法 |
内部调用listener.operationComplete(future) |
简要代码示例,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| interface Observer { void update(String message); }
class Subject { private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer observer) { observers.add(observer); }
public void notifyAllObservers(String message) { for (Observer observer : observers) { observer.update(message); } }
public void changeState() { notifyAllObservers("StateChanged"); } }
|