PureMVC中Notifier本應直接發送通知給Observer(如郵差投遞郵件),但實際將所有通知轉交Facade,再由Facade通過View分發,形成「Notifier→Facade→View→Observer」的冗長鏈路,違反單一職責原則。
改良方案**:引入Observer管理器(ObserverHub),讓Notifier直接向ObserverHub發送通知,由ObserverHub分發給具體Observer,消除Facade與View的中轉耦合。

原代碼缺陷**:
public void RegisterMediator(IMediator mediator)
{
if (mediatorMap.ContainsKey(mediator.GetMediatorName())) return; // 直接返回,不更新ViewComponent
}
問題場景**:頁面重載時,mediatorMap中舊Mediator持有過期ViewComponent引用,導致無法更新UI。
修復代碼**:
public void RegisterMediator(IMediator mediator)
{
if (mediatorMap.ContainsKey(mediator.GetMediatorName()))
{
// 更新ViewComponent引用,而非拒絕註冊
mediatorMap[mediator.GetMediatorName()].SetViewComponent(mediator.GetViewComponent());
return;
}
// ... 原註冊邏輯
}
歡迎關注後續更新,共同打造更優雅的C# MVC框架。