觀察者模式將觀察者(如 UI)與被觀察者(如業務資料)解耦。被觀察者狀態變更時,自動通知所有已註冊觀察者,觀察者據以更新顯示。符合「單一職責」原則,提升維護性與重用性。
觀察者與被觀察者不得直接互呼方法,否則形成緊耦合。雙方透過註冊/通知/移除流程互動:
// 觀察者契約
public interface IObserver
{
void Notify(object data);
}
// 被觀察者契約
public interface IObservable
{
void Register(IObserver observer);
void UnRegister(IObserver observer);
}
被觀察者僅依賴 IObserver 介面,不關心具體類型,支援多型觀察者群。