恩,明天又轮到我给我们小组讲模式,正好一边整理思路一边写随笔 ^_^
首先是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模式的优点...我也不置可否!
首先是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模式的优点...我也不置可否!

810

被折叠的 条评论
为什么被折叠?



