《从零开始学Swift》学习笔记(Day 66)——Cocoa Touch设计模式及应用之通知机制...
原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:關(guān)東升的博客?
通知(Notification)機(jī)制是基于觀察者(Observer)模式也叫發(fā)布/訂閱(Publish/Subscribe)模式,是 MVC(模型-視圖-控制器)模式的重要組成部分。?
問題提出
天氣一直是英國人喜歡討論的話題,而最近幾年天氣的變化也成為中國人非常關(guān)注的話題。我會(huì)根據(jù)天氣預(yù)報(bào)決定是坐地鐵還是開車上班,我的女兒也會(huì)根據(jù)天氣預(yù)報(bào)決定明天穿哪件衣服。于是我在移動(dòng)公司為我的手機(jī)定制了天氣預(yù)報(bào)短信通知服務(wù),它的工作模型如圖所示。
?
?
?
?
每天氣象局將天氣預(yù)報(bào)信息投送給移動(dòng)運(yùn)營商,移動(dòng)運(yùn)營商的短信中心負(fù)責(zé)把天氣預(yù)報(bào)發(fā)送給定制過這項(xiàng)服務(wù)的手機(jī)。
在軟件系統(tǒng)中,一個(gè)對(duì)象狀態(tài)改變也會(huì)連帶影響其他很多對(duì)象的狀態(tài)發(fā)生改變。能夠?qū)崿F(xiàn)這一需求的設(shè)計(jì)方案有很多,但能夠做到復(fù)用性強(qiáng)且對(duì)象之間匿名通信的,觀察者模式是其中最為適合的一個(gè)。
?
解決方案
通知機(jī)制可以實(shí)現(xiàn)“一對(duì)多”的對(duì)象之間的通信。如圖所示,在通知機(jī)制中對(duì)某個(gè)通知感興趣的所有對(duì)象都可以成為接收者。首先,這些對(duì)象需要向通知中心(NSNotificationCenter)發(fā)出addObserver消息進(jìn)行注冊(cè)通知,在投送對(duì)象通過postNotificationName消息投送通知給通知中心,通知中心就會(huì)把通知廣播給注冊(cè)過的接收者。所有的接收者都不知道通知是誰投送的,更不關(guān)心它的細(xì)節(jié)。投送對(duì)象與接收者是一對(duì)多的關(guān)系。接收者如果對(duì)通知不再關(guān)注,會(huì)給通知中心發(fā)出removeObserver消息注銷通知,以后不再接收通知。
??
歡迎關(guān)注關(guān)東升新浪微博@tony_關(guān)東升。
關(guān)注智捷課堂微信公共平臺(tái),了解最新技術(shù)文章、圖書、教程信息
?
更多精品iOS、Cocos、移動(dòng)設(shè)計(jì)課程請(qǐng)關(guān)注智捷課堂官方網(wǎng)站:http://www.zhijieketang.com
智捷課堂論壇網(wǎng)站:http://51work6.com/forum.php
?
總結(jié)
以上是生活随笔為你收集整理的《从零开始学Swift》学习笔记(Day 66)——Cocoa Touch设计模式及应用之通知机制...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【翻译】AdaIN:Arbitrary
- 下一篇: 新来乍到,谢谢大家捧场