CSDN博客

img bosses

Observer模式的几点体会

发表于2004/10/27 21:25:00  744人阅读

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

首先是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模式的优点...我也不置可否!
阅读全文
0 0

相关文章推荐

img
取 消
img