Observer Pattern
在對象之間定義一對多的依賴。
當一個對象改變狀態,依賴它的對象都會收到通知,並自動更新。
亦被稱作發佈/訂閱模式 (Publish/Subscribe Pattern)。
Example: Line群組通知
觀察者模式會將類別分為兩類:
分別是主題類別 (Subject) 與 觀察者類別 (Observer) 。
透過增加/移除名單中的觀察者,來控制主題類別改變時,
要通知的對象有哪些。
優點:
透過定義好的主題介面與觀察者介面,
將主題類別與觀察者類別的關係解耦。
即主題類別不需要知道真正的觀察者是誰,
而觀察者類別也不需要知道到底是誰通知它的。
缺點:
會使程式碼變得複雜。
觀察者類別中的方法名稱必須一致(可以用事件委託技術修正)
若觀察者訂閱多個主題時,無法決定被通知的順序。
與其他模式的比較:
[命令模式]:
命令模式中,調用者發送命令給接收者,由接收者決定是否執行命令。
觀察者模式中,主題發送通知給觀察者後,由觀察者自行決定要執行的行動。
經常運用在實時事件系統。
程式中有「通知」兩字的行為,很可能是它的應用時機。
ʕ •ᴥ•ʔ:又是個日常生活中就會看到的模式。