首页 > 代码库 > 学习日记之观察者模式

学习日记之观察者模式

观察者模式(发布-订阅 Publish/Subscribe 模式):定义了一种一对多的依赖关系,让多个观察者对象同事监听某一个主体对象。这个主体对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。


1:观察者模式特点

(1),将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。

(2),当一个对象改变需要同时改变其他对象的时候,而且它不知道具体有多少对象需要改变时,使用观察者模式。

(3),当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,这时用观察者模式可以将这两者封装在独立的对象中使他们各自独立的改变和复用。

(4),观察者模式所做的工作其实就是解除耦合。让耦合的双方都依赖与抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。


2:解决观察者模式缺陷

(1),委托就是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。委托可以看做是对函数的抽象,是函数的‘类’,委托的实例将代表一个具体的函数。

(2),一个委托可以搭载多个方法,所以方法依次被唤醒。更重要的,委托所搭载的方法并不一定属于同一个类。

(3),委托所搭载的所以方法必须具有相同的原型和形式,也就是拥有相同的参数列表和返回值类型。