观察者模式是一种一对多的关系,当一个对象状态发生改变时,所有依赖于它的对象都得到通知并完成更新
- 被观察者(Observerable):目标对象,状态发生变化时,通知所有的观察者
- 观察者(Observer):接收被观察者状态变化通知
例如异步通知场景
- 定义被观察者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public class Observable { private List<Observer> observers = new ArrayList<>(); private int state;
public int getState(){ return state; }
public void setState(int state){ notifyAllObservers(state); }
public void addObserve(Observer observer){ observers.add(observer); } public void removeObserve(Observer observer){ observers.remove(observer); }
public void notifyAllObservers(int state){ if (state != 1){ System.out.println("不是通知状态"); return ; } for (Observer observer : observers) { observer.doEvent(); } } }
|
- 观察者接口以及实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public interface Observer {
void doEvent(); }
public class EmailObserver implements Observer { @Override public void doEvent() { System.out.println("发邮件"); } }
public class MobileObserver implements Observer { @Override public void doEvent() { System.out.println("发短信"); } }
|