观察者模式(公布-订阅 Publish/Subscribe 模式):定义了一种一对多的依赖关系。让多个观察者对象同事监听某一个主体对象。这个主体对象在状态发生变化时,会通知全部观察者对象。使他们可以自己主动更新自己。
1:观察者模式特点
(1),将一个系统切割成一系列相互协作的类有一个非常不好的副作用。那就是须要维护相关对象间的一致性。
我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。
(2),当一个对象改变须要同一时候改变其它对象的时候,并且它不知道详细有多少对象须要改变时。使用观察者模式。
(3),当一个抽象模型有两个方面,当中一个方面依赖于还有一个方面,这时用观察者模式能够将这两者封装在独立的对象中使他们各自独立的改变和复用。
(4)。观察者模式所做的工作事实上就是解除耦合。
让耦合的两方都依赖与抽象,而不是依赖于详细。从而使得各自的变化都不会影响还有一边的变化。
2:解决观察者模式缺陷
(1),托付就是一种引用方法的类型。
一旦为托付分配了方法。托付将与该方法具有全然同样的行为。托付方法的使用能够像其它不论什么方法一样,具有參数和返回值。托付能够看做是对函数的抽象,是函数的‘类’。托付的实例将代表一个详细的函数。
(2),一个托付能够搭载多个方法,所以方法依次被唤醒。更重要的。托付所搭载的方法并不一定属于同一个类。
(3),托付所搭载的所以方法必须具有同样的原型和形式,也就是拥有同样的參数列表和返回值类型。