Observer模式,delegate(委托)模式

观察者(Observer)模式

1.定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。

2.观察者(Observer),是希望得到获得通知的对象。

   目标(subject),触发事件的对象.

   如果Observer对象需要从subject那里获得更多信息,就需要传给接口函数一个指向调用对象(subject)的引用.

3.Observer模式并不是只要在对象间存在依赖关系时就要使用。

   当依赖关系固定时,引入Observer模式可能只会增加复杂性。


委托模式不同于观察者模式:

   观察者模式中通告者依赖抽象观察者。

   委托模式中不要求被通知者实现观察接口,委托可以看作是对函数指针调用。

   ios中的delegate是委托模式和观察者模式,不叫代理模式,它在形式上通过协议来实现。

   委托者常把任务委托给委托者的管理对象或相关对象,为委托者提供数据源等服务。

   

 

1.Observer模式归为行为型模式中的解偶型模式,又称依赖发布-订阅

目的是使通知者和被通知者解偶。

2.希望得到获得通知的对象是观察者(Observer),它们实现接口。

触发事件的对象是目标(subject),它拥有多个接口引用。

这样是一个subject根据引用的接口数对应多个observer.

如果Observer对象需要从subject那里获得更多信息,就需要传给接口函数一个指向调用对象(subject)的引用.

3.利用接口中获得的subject的信息,就可以使多个subject都通知到同一个观察者.

这样是多个subject对应一个observer,在这个observer实现的接口函数中处理不同的subject的通知。

4.Observer模式并不是只要在对象间存在依赖关系时就要使用。

当依赖关系固定时,引入Observer模式可能只会增加复杂性。

5.在C#java中使用实现接口,在c++中使用继承虚类

6.subject中通常包含两个方法

attach(Observer) 注册观察者,可以注册多个观察者,使它们都被通知到。

detach(Observer) 卸载观察者

7.java.util.Observer接口, java.util.Observable类

8.subject引用observer,在uml类图中,使用 “------->”连接符号。

9.每个observer在注册时提供给subject一个策略(strategy)对象,供subject筛选是否通知及通知的内容。

10.可考虑在subject类中,将注册列表设计为静态的,这适合observer想要得到所有subject对象的通知

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值