觀察者模式

Observer Pattern

在對象之間定義一對多的依賴

當一個對象改變狀態,依賴它的對象都會收到通知,並自動更新。

亦被稱作發佈/訂閱模式 (Publish/Subscribe Pattern)。

Example: Line群組通知


觀察者模式會將類別分為兩類:
分別是主題類別 (Subject)觀察者類別 (Observer)

透過增加/移除名單中的觀察者,來控制主題類別改變時,
要通知的對象有哪些。


優點
透過定義好的主題介面與觀察者介面,
將主題類別與觀察者類別的關係解耦。

即主題類別不需要知道真正的觀察者是誰,
而觀察者類別也不需要知道到底是誰通知它的。

缺點
會使程式碼變得複雜。
觀察者類別中的方法名稱必須一致(可以用事件委託技術修正)
若觀察者訂閱多個主題時,無法決定被通知的順序


與其他模式的比較:

[命令模式]:
命令模式中,調用者發送命令給接收者,由接收者決定是否執行命令
觀察者模式中,主題發送通知給觀察者後,由觀察者自行決定要執行的行動


經常運用在實時事件系統。
程式中有「通知」兩字的行為,很可能是它的應用時機。

ʕ •ᴥ•ʔ:又是個日常生活中就會看到的模式。