Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
37 lines (22 sloc) 1.92 KB

#ObserverPattern(观察者模式) ##模式引入由来

  • 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应

  • 观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。

##涉及的设计原则 为了交互对象间的松耦合设计而努力。

##模式定义 观察者模式——定义了对象间的一对多依赖,这样一来,当一个对象改变状态时,他所有的通知都会收到通知并自动更新。

image

##优缺点 观察者模式的优点

  • 观察者模式可以实现表示层和数据逻辑层的分离,并定义了稳定的消息更新传递机制,抽象了更新接口,使得可以有各种各样不同的表示层作为具体观察者角色。

  • 观察者模式在观察目标和观察者之间建立一个抽象的耦合。观察者模式的缺点

  • 改变接口通知的方式会使子类和主题类的实现都会受到影响

  • 如果一个观察目标对象有很多直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。

  • 如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。

##使用场景

  • 一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。

  • 一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。

  • 一个对象必须通知其他对象,而并不知道这些对象是谁。

##Demo 模式Demo