1.概念
观察者模式(observer)又称发布-订阅(Publish/Subscribe)模式
观察者模式是一种一对多的依赖关系,允许多个观察者同时监控一个主题对象。当主题对象在状态下发生变化时,它会通知所有观察者,使他们能够自动更新自己。
2.主题和观察者共有四个角色(1)Subject:抽象主题,他将所有观察者对象保存在一个集合中,可以有任何数量的观察者,提供一个可以添加和删除观察者对象的界面。
(2)ConcreteSubject:对于特定的主题,角色将相关状态存储在特定的观察者对象中,并在特定主题的内部状态发生变化时向所有注册的观察者发出通知。、
(3)Observer:抽象观察者是观察者的抽象类,它定义了一个更新界面,以便在获得主题更改通知时更新自己。
(4)ConcrereObserver:具体观察者实现抽象观察者定义的更新接口,以便在获得主题变更通知时更新自己的状态。
3.适用性抽象模型有两个方面,一个方面取决于另一个方面
当一个对象的变化需要改变其他对象时,其他对象不知道具体的数量
4.优点增加观察者或增加观察者不会改变现有代码,实现关闭-开放的原则
耦合双方依赖抽象而不是具体实现,使各自的变化不会影响另一方的变化
5.不足当观察者通知观察者时,没有固定的顺序,即随机通知,这是基于线性的,因此在许多情况下完成通知需要很长时间,然后可以考虑异步。