Posted on 2008-07-19 14:58
sailor 阅读(127)
评论(0) 编辑 收藏 所属分类:
模式
1、定义
在对象之间定义一对多的依赖,这样一来,当一个对象改变时状态,依赖他的对象会收到通知,并自动更新。这种模式以松耦合方式在一些列对象之间改变状态。MVC模式就是观察者模式的一个代表。
2、实用性
当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。
当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。
当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望这些对象是紧密耦合的。
3、设计原则
找出程序中会变化的方面,然后将其和固定不变的方面相分离
在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型。用这个模式,你可以依赖于主题状态的对象,却不必改变主题。这就叫提前规划。
针对接口编程,不针对实现编程
主题与观察者都使用接口:观察者利用主题的接口,向主题注册;而主题利用观察者的接口通知接口。这样可以让两者之间运作正常,又同事具有松耦合的优点。
多用组合,少用继承
观察者模式利用“组合”,将许多观察者组合进主题中。对象之间的这种关系不是通过继承产生的,而是在运行时利用组合的方式而产生的。
4、实现