观察者(Observer)模式
1.定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。
2.观察者(Observer),是希望得到获得通知的对象。
目标(subject),触发事件的对象.
如果Observer对象需要从subject那里获得更多信息,就需要传给接口函数一个指向调用对象(subject)的引用.
3.Observer模式并不是只要在对象间存在依赖关系时就要使用。
当依赖关系固定时,引入Observer模式可能只会增加复杂性。
委托模式不同于观察者模式:
观察者模式中通告者依赖抽象观察者。
委托模式中不要求被通知者实现观察接口,委托可以看作是对函数指针调用。
ios中的delegate是委托模式和观察者模式,不叫代理模式,它在形式上通过协议来实现。
委托者常把任务委托给委托者的管理对象或相关对象,为委托者提供数据源等服务。
1.Observer模式归为行为型模式中的解偶型模式,又称依赖或发布-订阅。
2.希望得到获得通知的对象是观察者(Observer),它们实现接口。
3.利用接口中获得的subject的信息,就可以使多个subject都通知到同一个观察者.
5.在C#java中使用实现接口,在c++中使用继承虚类
6.subject中通常包含两个方法
7.java.util.Observer接口, java.util.Observable类
8.subject引用observer,在uml类图中,使用 “------->”连接符号。
9.每个observer在注册时提供给subject一个策略(strategy)对象,供subject筛选是否通知及通知的内容。
10.可考虑在subject类中,将注册列表设计为静态的,这适合observer想要得到所有subject对象的通知