@@ -12,33 +12,36 @@ You have to notify some objects about an event happen
1212Use an [ Observer Pattern] ( http://en.wikipedia.org/wiki/Observer_pattern )
1313
1414{% highlight coffeescript %}
15+
1516class PostOffice
16- constructor: () ->
17- @subscribers = [ ]
18- sendNewItemReleased : (item) ->
19- subscriber.callback(item) for subscriber in @subscribers when subscriber.item is item
20- return
21- subscribe: ( to, onNewItemReleased) ->
22- @ subscribers .push({'item' : to , 'callback' : onNewItemReleased })
17+ constructor: () ->
18+ @subscribers = [ ]
19+ notifyNewItemReleased : (item) ->
20+ subscriber.callback(item) for subscriber in @subscribers when subscriber.item is item
21+ subscribe: (to, onNewItemReleased) ->
22+ @ subscribers .push {'item' : to , 'callback' : onNewItemReleased }
23+
2324class MagazineSubscriber
24- onNewMagazine: (item) ->
25- alert "I've got new "+item
25+ onNewMagazine: (item) ->
26+ alert "I've got new "+item
27+
2628class NewspaperSubscriber
27- onNewNewspaper: (item) ->
28- alert "I've got new "+item
29+ onNewNewspaper: (item) ->
30+ alert "I've got new "+item
2931
3032postOffice = new PostOffice()
3133sub1 = new MagazineSubscriber()
3234sub2 = new NewspaperSubscriber()
3335postOffice.subscribe "Mens Health", sub1.onNewMagazine
3436postOffice.subscribe "Times", sub2.onNewNewspaper
35- postOffice.sendNewItemReleased "Times"
36- postOffice.sendNewItemReleased "Mens Health"
37+ postOffice.notifyNewItemReleased "Times"
38+ postOffice.notifyNewItemReleased "Mens Health"
39+
3740{% endhighlight %}
3841
3942## Discussion
4043
4144Here you have an observer object (PostOffice) and observable objects (MagazineSubscriber, NewspaperSubscriber).
4245To be notified about an event of publishing new periodical observable object should make subscribtion on PostOffice.
43- Every of subscribed objects is stored internaly in the PostOffice array of subscribers .
46+ Every of subscribed objects is stored internaly in the PostOffice array of subscribtions .
4447Every subscriber is notified on new concrete periodical is published.
0 commit comments