类图
推模式
拉模式
推拉模式
获取观察对象的变更信息,有推和拉两种模式
- 推模式:ConcreteObserver通过Observer.update中的changeInfo参数,获取观察对象的变更信息
- 拉模式:ConcreteObserver.update的方法实现中,通过调用IchangeSource.getChangeInfo接口获取观察对象的变更信息
建议
- 观察对象复杂,观察者需要提示,推模式比较合适
- 观察对象简单,拉模式比较合适
遵循的设计原则
设计原则:设计模式-01 六大设计原则
- 开闭原则(OCP):可随时添加新的观察者
- Liskov替换原则(LSP):Subject.notifyAll中,通过调用Observer.update方法通知具体的观察者(子类可以替换父类)
- 依赖倒置原则(DIP):Subject没有依赖具体的观察者
閱讀更多 IT學習分享 的文章