首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

PureMVC C#框架深度分析與改良方案(二):Notifier職責重構與Mediator註冊Bug修復

     編輯:關於C語言

Notifier職責異位問題

PureMVC中Notifier本應直接發送通知給Observer(如郵差投遞郵件),但實際將所有通知轉交Facade,再由Facade通過View分發,形成「Notifier→Facade→View→Observer」的冗長鏈路,違反單一職責原則。

改良方案**:引入Observer管理器(ObserverHub),讓Notifier直接向ObserverHub發送通知,由ObserverHub分發給具體Observer,消除Facade與View的中轉耦合。

改良後架構圖

Mediator註冊Bug與修復

原代碼缺陷**:


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;
    }
    // ... 原註冊邏輯
}

後續計劃

  • 完善PureMVC實現機制深度分析文章。
  • 基於改良方案重構PureMVC C#版本,發布源碼。
  • 優化適用於C#生態的特性(泛型、事件、異步等)。

歡迎關注後續更新,共同打造更優雅的C# MVC框架。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved