javascript观察者模式

  • Post author:
  • Post category:java




观察者模式

  • hello,大家好,今天给大家介绍一下观察者模式,JavaScript一共有十六种模式

    观察者模式就是其中之一



定义

  • 观察者模式也称为

    发布-订阅模式

    ,它定义对象间一种

    一对多

    的赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到

    通知

    。在JavaScript开发中,我们一般用

    事件模型

    来代替

    观察者模式



和生活联系在一起举例


例如:


两对手竞争开了一家KTV,两家互相派一名探子在对方的KTV内打探消息,一旦对方有新颖的活动,探子就会把消息告诉老板,从而模仿对方的思路开展活动,进而打压对方。


再比如:

  • 小明最近看上了一套房子,到售楼处之后才被告知。该楼盘的房子早已售罄,好在售楼美女告诉不久后还有一些尾盘推出。开发商正在办理相关手续,手续办好后便可以购买。但到底是什么时候,目前还没有人能够知道,于是小明记下了售楼处的电话。以后每天都会打电话过去询问是否是已经到了购买时间。除了小明还有小红、小强、小能、也会每天向售楼处咨询这个问题。一个星期过后,售楼美女决定辞职,因为厌倦了每天回答1000个相同内容的电话。
  • 当然,现实中没有这么笨的销售公司。实际上故事是这样的。小明在离开之前把电话号码留在了售楼处,售楼美女答应他新楼盘一推出就马上发信息。通知,小明,小红,小强和小熊也是一样,他们的电话号码都被记在售楼处的花名册上。新楼盘推出后,售楼美女会翻开花名册,遍历上面的电话号码。依次发送一条短信来通知他们。
  • 在刚刚的例子中。发送短信通知就是一个典型的

    发布订阅模式

    。小明,小红等购买者都是订阅者,他们订阅了房子开售的消息。售楼处作为发布者会在合适的时候遍历花名册上的电话号码。一次给购房者发送信息,可以发现,在这个例子中使用观察者模式。有着显而易见的优点,购房者不用再天天给售楼处打电话咨询开售时间。在合适的时间点,售楼处发布者会通知这些消息订阅者,购房者和售楼处之间不再强耦合在一起。当有新的购房者出现时,他只需要把手机号码留在售楼处。售楼处不关心购房者的任何情况,不管购房者是男是女还是一只猴子。而售楼处的任何变动也不会影响购买者,比如售楼美女辞职。售楼处从一楼搬到二楼,这些改变都跟购房者无关。只要售楼处记得发短信这件事情。



观察者模式的作用

  1. 可以广泛的应用于异步编程中,这是一种替代回调函数的方案,比如:我们可以订阅AJax请求的error、succ等事件,或者在动画的每一帧完成时做一些事情,那我们可以订阅一个事件,然后在动画的每一帧完成后发布这个事件。在异步编程中使用观察者模式,我们就不用更多关心对象在异步运行期间的内存状态,而只需要订阅感兴趣的事件发生点。
  2. 观察者模式可以取代对象之间的硬编码的通知机制,一个对象不用在显式的调用另外一个对象的某个接口。观察者模式让两个对象松耦合地联系在一起,虽然不太清楚彼此的细节,但这不影响他们之间的·1相互通信。当有新的订阅者出现时,发布的代码不需要任何修改;同样发布者需要改变时也不会影响到之前的订阅者。只要之前约定的事件名没有变,就可以自由的改变他们。



DOM事件



版权声明:本文为qq_15571919原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。