CoffeeScript 观察者模式


本文整理自网络,侵删。

观察者模式

问题

当一个事件发生时你不得不向一些对象发布公告。

解决方案

使用观察者模式(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 "+item

class NewspaperSubscriber
    onNewNewspaper: (item) ->
        alert "I've got new "+item

postOffice = new PostOffice()
sub1 = new MagazineSubscriber()
sub2 = new NewspaperSubscriber()
postOffice.subscribe "Mens Health", sub1.onNewMagazine
postOffice.subscribe "Times", sub2.onNewNewspaper
postOffice.notifyNewItemReleased "Times"
postOffice.notifyNewItemReleased "Mens Health"

讨论

这里你有一个观察者对象(PostOffice)和可观察对象(MagazineSubscriber, NewspaperSubscriber)。为了通报发布新的周期性可观察对象的事件,应该对 PostOffice进行订阅。每一个被订阅的对象都存储在PostOffice的内部订阅数组中。当新的实体周期发布时每一个订阅者都会收到通知。


标签:CoffeeScript

相关阅读 >>

CoffeeScript 生成可预测的随机数

CoffeeScript 工厂方法模式

CoffeeScript 类变量和实例变量

CoffeeScript 服务器

CoffeeScript 生成器模式

CoffeeScript sqlite

CoffeeScript 列表推导

CoffeeScript 字符串插值

CoffeeScript 查找子字符串

CoffeeScript 桥接模式

更多相关阅读请进入《CoffeeScript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...