1. 程式人生 > >設計模式(二):自己動手使用“觀察者模式”實現通知機制

設計模式(二):自己動手使用“觀察者模式”實現通知機制

在之前釋出Objective-C系列部落格的時候,其中提到過OC的通知機制,請參考《Objective-C中的老闆是這樣發通知的(Notification)》這篇部落格。在之前關於Notification的部落格中,只介紹了Foundation框架中的通知的使用方式。正如前面部落格中提到的那樣,通知是“一對多的關係”,類似於廣播。一個人發通知,多個人接收。這也就是設計模式中的“觀察者模式”。接收者的一方是Observer(觀察者),而傳送方是Subject(主題)。一個人要想成為Observer,要在Subject中進行註冊,也就是說要給Subject說,我要成為你的觀察者,然後Subject就會給Observer推送訊息。

我們不僅要知其然,還要知其所以然。今天部落格的主題是“觀察者模式”(Observe Pattern),所以我們要先通過一個小的Demo來理解一下“觀察者模式” ,當然使用的是Swift語言來實現的(語言只是載體呢,主要還是模式不是)。通過一個小Demo對“觀察者模式”進行學習後,緊接著會看一下在Swift中是如何使用Foundation框架中的通知的,並給出相應的示例。最後就是我們放大招的時候了,我們會參照著Foundation框架中的通知機制來實現我們自己的“通知中心”,說白了,就是我們不用Foundation的通知機制,我們自己寫,但是使用方式與Foundation框架中的通知機制幾乎相同。這應該就是Foundation框架中通知機制的實現原理吧。在本博文的開頭需要有個乾貨預警

呢。

一、認識“觀察者模式”(Observe Pattern)

1.觀察者模式的定義

開門見山,先來看一下觀察者模式的定義吧:

觀察者設計模式定義了物件間的一種一對多的依賴關係,以便一個物件的狀態發生變化時,所有依賴於它的物件都得到通知並自動重新整理。

上面就是觀察者模式的定義。也許你看定義有些抽象,其實觀察者模式並不難理解。舉個栗子