七天學會設計模式 – Observe

訂閱

有使用過網誌或是一些新聞類型的網站時,通常可以在旁邊看到「訂閱」的按鈕,接著點擊下去後就可以在作者有發動或異動文章時,收到通知。

Observe

這個設計模式的概念類似於「訂閱」的功能,我們會去「訂閱」某個物件,當它做了某些事情或者其值改變時,可以去做相對應的動作。

應用

舉個比較常會遇到的案例:鍵盤

我們通常會希望在鍵盤升起來時,調整我們的畫面,看是移動 View 的 frame,或是設定 TableView 的 ContentOffset 之類的。

而大多數採取的方式是「監聽」 NotificationCenter 的「鍵盤升起」的事件,所以當「鍵盤升起」時,我們可以做相對應的處理;而當「鍵盤收起」時,我們也可以執行另一段 function。

這,便是 Observe 的設計模式。

我們去「訂閱」或者「監聽」某個事件,像是 Value changed 或是某個 function 被呼叫,來做相對應的處理。

第三方套件

RxSwiftReactiveCocoa 便都是圍繞在 Observe 設計模式的框架,來做響應式的開發。

響應式開發

如名稱所述,意思是指當 Model 或者 ViewModel 的狀態(值)更動時,畫面可以很即時地跟著變動。

對 RxSwift 有興趣的人,可以看看這篇文章 線上讀書會 RxSwift 影片分享