Jul
18
三、观察者模式
观察者模式(Observer Pattern)必须包含两个角色:观察者和被观察对象。观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变时,观察者就会观察到变化,并且做出相应的响应。观察者模式完美地将观察者和被观察者的对象分离开。
该模式通常是向一个对象添加一个方法使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者使用该信息执行的操作与可观察的对象无关。结果是对象之间互相对话,而不必了解原因。
1、类图
这里,IObservable 接口定义了成员方法 addObserver()来增加观察者对象,UseList类是用来实现IObservable 接口的,UserList 类主要是关注可观察的对象。当可观察的对象更改时,它就会将消息发送到已注册的观察者。IObserver 接口定义了成员方法onChange() 类实现更新功能,类UserListLogger() 用来实现IObserver 接口,在得到UserList 类发送的更改消息后就更新自己。
2、代码
观察者模式(Observer Pattern)必须包含两个角色:观察者和被观察对象。观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变时,观察者就会观察到变化,并且做出相应的响应。观察者模式完美地将观察者和被观察者的对象分离开。
该模式通常是向一个对象添加一个方法使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者使用该信息执行的操作与可观察的对象无关。结果是对象之间互相对话,而不必了解原因。
1、类图
这里,IObservable 接口定义了成员方法 addObserver()来增加观察者对象,UseList类是用来实现IObservable 接口的,UserList 类主要是关注可观察的对象。当可观察的对象更改时,它就会将消息发送到已注册的观察者。IObserver 接口定义了成员方法onChange() 类实现更新功能,类UserListLogger() 用来实现IObserver 接口,在得到UserList 类发送的更改消息后就更新自己。
2、代码