DesignPatterns
1. 關於 Observer
2. UML
3. 將 UML 轉為程式碼
4. 情境
OS:Windows 10
IDE:Visual Studio 2019
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
by Gang of Four
Observer(觀察者)屬於行為型(Behavioral Patterns),當遇到自身狀態異動就會有其他物件要跟著處理時,可藉由 Observer 來處理通知邏輯,將「狀態異動的物件」與「要跟著處理的物件」解除耦合,之後新增一個「要跟著處理的物件」時,直接訂閱通知即可。
優點:
缺點:
Class 間關聯:
Class:
Subject 的抽象類別,實作加入 & 移除觀察者
Subject 實作
觀察者介面
觀察者實作
originator
並給定初始值 Oncaretaker
並透過originator
建立Memento
State
的值Memento
還原State
的值執行結果
我們接到了一個缺貨商品到貨通知的需求
到貨狀態 enum
商品抽象類別,實作加入 & 移除觀察者
商品介面,紀錄商品名稱 & 到貨狀態
商品實作
觀察者介面
觀察者實作
iPhone
& iPad
StockType.OutOfStock
iPhone
& iPad
到貨通知執行結果
GitHub:Behavioral_07_Observer