定義對象間一對多依賴關係,當一個對象狀態改變時,所有依賴它的對象都能得到通知並自動更新。
假設需在網頁分頁顯示資料。初期需求簡單:兩個按鈕(上/下頁)+ GridView 顯示資料。實作邏輯:點擊按鈕檢查頁碼邊界 → 更新 GridView → 更新按鈕狀態。此時僅依賴 GridView,問題不大。
客戶看 Demo 後要求顯示「當前頁/總頁數」,新增 Label 控件,按鈕事件中同步更新 Label。客戶滿意。隨資料增多達數十頁,客戶嫌前後翻頁不便,要求新增頁碼列表分頁控制器。此需求徹底打亂代碼:
未來若再有分頁相關修改,代碼將無法維護。由此引入觀察者模式解決耦合混亂問題。