訂閱
有使用過網誌或是一些新聞類型的網站時,通常可以在旁邊看到「訂閱」的按鈕,接著點擊下去後就可以在作者有發動或異動文章時,收到通知。
Observe
這個設計模式的概念類似於「訂閱」的功能,我們會去「訂閱」某個物件,當它做了某些事情或者其值改變時,可以去做相對應的動作。
應用
舉個比較常會遇到的案例:鍵盤 我們通常會希望在鍵盤升起來時,調整我們的畫面,看是移動 View 的 frame,或是設定 TableView 的 ContentOffset 之類的。 而大多數採取的方式是「監聽」 NotificationCenter 的「鍵盤升起」的事件,所以當「鍵盤升起」時,我們可以做相對應的處理;而當「鍵盤收起」時,我們也可以執行另一段 function。 這,便是 Observe 的設計模式。 我們去「訂閱」或者「監聽」某個事件,像是 Value changed 或是某個 function 被呼叫,來做相對應的處理。
第三方套件
RxSwift、ReactiveCocoa 便都是圍繞在 Observe 設計模式的框架,來做響應式的開發。
響應式開發
如名稱所述,意思是指當 Model 或者 ViewModel 的狀態(值)更動時,畫面可以很即時地跟著變動。 對 RxSwift 有興趣的人,可以看看這篇文章 線上讀書會 RxSwift 分享。