Swift-觀察者模式

觀察者模式也可以叫發(fā)布訂閱模式,觀察者有的時(shí)候不一定能準(zhǔn)備表達(dá)觀察者模式蛤织,主要包括訂閱者和發(fā)布者,狀態(tài)事件處理,關(guān)系類圖如下所示:


觀察者模式.png

主題對(duì)象(Subject) 表示也可以稱之為發(fā)布者儿礼,可以添加觀察者,刪除觀察者.
觀察者對(duì)象(Observer) 也稱之為訂閱者庆寺,訂閱觀察對(duì)象蚊夫,如果觀察對(duì)象發(fā)生變更,觀察者對(duì)象狀態(tài)也會(huì)隨之響應(yīng).

iOS中觀察者模式最常見(jiàn)的是NSNotification,可以按照類圖自定義觀察中心懦尝,觀察者對(duì)象.
主題對(duì)象定義:
<pre><code>`class ObserverCenter {

var observerMap:[String:Observer] = [:]

func addObserver(observerName:String,observer:Observer) {
    observerMap[observerName] = observer
}

func deleteObserver(observerName:String) {
    observerMap.removeValue(forKey: observerName)
}

func notifyObserver(data:String) {
    
    for (_,value) in observerMap {
        let observer:Observer = value
        observer.updateData(data: data)
    }
    
}

}`</code></pre>

觀察者對(duì)象:
<pre><code>`class Observer {

func updateData(data:String) {}

}

class CourseObserver: Observer {

override func updateData(data: String) {
      print("課程更新了---\(data)")
}

}

class StudyObserver: Observer {

override func updateData(data: String) {
      print("學(xué)習(xí)更新了---\(data)")
}

}`</code></pre>

測(cè)試代碼:
<pre><code>` let observerCenter:ObserverCenter = ObserverCenter()

    let courseObserver:CourseObserver = CourseObserver()
    observerCenter.addObserver(observerName: "Course", observer: courseObserver)
   
    let studentObserver:StudyObserver = StudyObserver()
    observerCenter.addObserver(observerName: "Student", observer: studentObserver)
    
    observerCenter.notifyObserver(data: "FlyElephant")`</code></pre>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末知纷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子陵霉,更是在濱河造成了極大的恐慌琅轧,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踊挠,死亡現(xiàn)場(chǎng)離奇詭異鹰晨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)止毕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門模蜡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扁凛,你說(shuō)我怎么就攤上這事忍疾。” “怎么了谨朝?”我有些...
    開(kāi)封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵卤妒,是天一觀的道長(zhǎng)甥绿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)则披,這世上最難降的妖魔是什么共缕? 我笑而不...
    開(kāi)封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮士复,結(jié)果婚禮上烫罩,老公的妹妹穿的比我還像新娘我擂。我一直安慰自己吗冤,他們只是感情好问顷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著冗荸,像睡著了一般承璃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚌本,一...
    開(kāi)封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天盔粹,我揣著相機(jī)與錄音,去河邊找鬼程癌。 笑死舷嗡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的席楚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼税稼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼烦秩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起郎仆,我...
    開(kāi)封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤只祠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后扰肌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抛寝,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年曙旭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盗舰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桂躏,死狀恐怖钻趋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剂习,我是刑警寧澤蛮位,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布较沪,位于F島的核電站,受9級(jí)特大地震影響失仁,放射性物質(zhì)發(fā)生泄漏尸曼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一萄焦、第九天 我趴在偏房一處隱蔽的房頂上張望控轿。 院中可真熱鬧,春花似錦楷扬、人聲如沸解幽。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)躲株。三九已至,卻和暖如春镣衡,著一層夾襖步出監(jiān)牢的瞬間霜定,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工廊鸥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留望浩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓惰说,卻偏偏與公主長(zhǎng)得像磨德,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吆视,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1 場(chǎng)景問(wèn)題# 1.1 訂閱報(bào)紙的過(guò)程## 來(lái)考慮實(shí)際生活中訂閱報(bào)紙的過(guò)程典挑,這里簡(jiǎn)單總結(jié)了一下,訂閱報(bào)紙的基本流程...
    七寸知架構(gòu)閱讀 4,621評(píng)論 5 57
  • 觀察者模式 在iOS開(kāi)發(fā)中應(yīng)用相當(dāng)廣泛啦吧,即:Key-Value Observing您觉,它提供一種機(jī)制,當(dāng)指定的對(duì)象的...
    黑_白_灰閱讀 1,327評(píng)論 0 0
  • 1. 概述 有時(shí)被稱作發(fā)布/訂閱模式授滓,觀察者模式定義了一種一對(duì)多的依賴關(guān)系琳水,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象...
    eb51589b1211閱讀 390評(píng)論 0 0
  • 觀察者模式定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象般堆。這個(gè)主題對(duì)象在狀態(tài)上發(fā)生變化時(shí)在孝,會(huì)通...
    扈扈哈嘿閱讀 1,326評(píng)論 0 12
  • 傳說(shuō)人死后會(huì)經(jīng)過(guò)一座橋,名曰奈何橋 橋上有位慈眉善目的老太太,名曰孟婆 孟婆會(huì)給每位經(jīng)過(guò)橋上的人一碗湯,名曰孟婆湯...
    胡利梅閱讀 661評(píng)論 0 4