Observer模式的几点体会

恩,明天又轮到我给我们小组讲模式,正好一边整理思路一边写随笔 ^_^

首先是Observer模式,个人感觉这个模式是用来解耦相互联系的两个对象,以便他们可以独立的被重用。
这个模式值得注意的是以下几个方面:

(1)由谁来发起通知。是由Subject自身改变时自动调用Notify,还是由Client来调用。前者比较自动,但是Update的频率比较高;后者相对被动,但是可以实现Subject多次改变后Observer的集中更新。

(2)由谁建立Subject和Observer之间的关联。是由Subject::Add(Observer)还是由Observer::Subcribe(Subject)。我觉得后一种比较好,因为Subject不必知道它的Observer是谁,而Observer必须知道它要Observe谁 :)

(3)Subject可以再分解。Subject = Entity + ObserverableInterface,Entity是一个实体,它有它的功能和性质,我们把他装配上一个可以被Observed的接口,它就变成一个Subject了。具体的方式可以多重继承,组合等等。

(4)不好的地方:我觉得这个模式最为不好的地方就是隐藏了Observer,在Client中看不到Observer的行为。不过,也许你会说这个是Observer模式的优点...我也不置可否!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值