当前位置:K88软件开发文章中心编程语言JavaScriptCoffeeScript → 文章内容

CoffeeScript 观察者模式

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 15:34:19

由 珍珍阿姨 创建,Carrie 最后一次修改 2016-08-12 观察者模式问题当一个事件发生时你不得不向一些对象发布公告。解决方案使用观察者模式(Observer Pattern)。class PostOffice constructor: () -> @subscribers = [] notifyNewItemReleased: (item) -> subscriber.callback(item) for subscriber in @subscribers when subscriber.item is item subscribe: (to, onNewItemReleased) -> @subscribers.push {'item':to, 'callback':onNewItemReleased}class MagazineSubscriber onNewMagazine: (item) -> alert "I've got new "+itemclass NewspaperSubscriber onNewNewspaper: (item) -> alert "I've got new "+itempostOffice = new PostOffice()sub1 = new MagazineSubscriber()sub2 = new NewspaperSubscriber()postOffice.subscribe "Mens Health", sub1.onNewMagazinepostOffice.subscribe "Times", sub2.onNewNewspaperpostOffice.notifyNewItemReleased "Times"postOffice.notifyNewItemReleased "Mens Health"讨论这里你有一个观察者对象(PostOffice)和可观察对象(MagazineSubscriber, NewspaperSubscriber)。为了通报发布新的周期性可观察对象的事件,应该对 PostOffice进行订阅。每一个被订阅的对象都存储在PostOffice的内部订阅数组中。当新的实体周期发布时每一个订阅者都会收到通知。

CoffeeScript 观察者模式