设计模式-08 观察模式

类图

推模式

设计模式-08 观察模式

拉模式

设计模式-08 观察模式

推拉模式

获取观察对象的变更信息,有推和拉两种模式

  • 推模式:ConcreteObserver通过Observer.update中的changeInfo参数,获取观察对象的变更信息
  • 拉模式:ConcreteObserver.update的方法实现中,通过调用IchangeSource.getChangeInfo接口获取观察对象的变更信息

建议

  • 观察对象复杂,观察者需要提示,推模式比较合适
  • 观察对象简单,拉模式比较合适

遵循的设计原则

设计原则:设计模式-01 六大设计原则

  1. 开闭原则(OCP):可随时添加新的观察者
  2. Liskov替换原则(LSP):Subject.notifyAll中,通过调用Observer.update方法通知具体的观察者(子类可以替换父类)
  3. 依赖倒置原则(DIP):Subject没有依赖具体的观察者


分享到:


相關文章: