为什么要用这个模式?
1、建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。
2、一个通知者可以对应多个观察者,并且他们之间没有相互联系。
3、观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。
是什么?
定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新
观察者模式包含以下四种角色:
1、Subject:目标
2、ConcreteSubject:具体目标
3、Observer:观察者
4、ConcreteObserver:具体观察者
UML图:
解说:Subject是抽象类,而具体的通知者需要继承这个抽象类。Observer是一个接口,具体的观察者需要去实现这个接口。而两个具体的子类通过图中的两句代码产生了一定的联系
举例:一个公司里同事有看股票的涨幅,有看NBA的,这个时候需要前台秘书来通知,也可能秘书没有时间通知,直接被老板撞见,所以这个时候老板和秘书都是通知者,而同事是观察者。
代码如下: