程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#版MVC框架PureMVC的深入分析和改良方案(2)

C#版MVC框架PureMVC的深入分析和改良方案(2)

編輯:關於C語言

在PureMVC中有一個類叫Notifyer,根據字面的意思,它應該是Notification的傳遞都,也就是郵差才對。然而這個類卻不做自己的本職工作---給Observer發送通知,而是把所有通知都推給了Facade,再由Facade通過VIEw來把Notification發送給Observer。發個通知也一波三折,我覺得這樣設計不夠合理。前面我已經創建了觀察都的公司Obsertor了,那麼Notifyer只要直接把Notification發送到Obsertor就可以了,Obsertor會把Notification發給具體的Observer。現實中的公司都是這樣子的吧,經常都是前台告訴我,我的包裹到了。因此,應該讓Notifyer做回它的本職工作。

PureMVC的C#版本在Mediator的注冊上存在著點BUG,注冊Mediator的部分代碼:

Code
public void registerMediator(IMediator mediator)
{
if (mediatorMap.ContainsKey(mediator.getMediatorName())) return;

它的本意是避免Mediator的重復注冊,然後當頁面重新加載時,mediatorMap裡的Mediator的視圖已經過時了,這樣就導致了無法更新頁面。我的解決方法是

Code
public void registerMediator(IMediator mediator)
{
      if (mediatorMap.ContainsKey(mediator.getMediatorName()))
      {
        mediatorMap[mediator.getMediatorName()].setViewComponent(mediator.getVIEwComponent());
        return;
      }

局部更新一下VIEwComponent,這樣就運行正常了。

本來是想分析一下PureMVC的實現機制的,但發現自己的表達能力實在有限,心有余而力足,但哪天有思路了,再為大家獻上。同時,我再根據自己的方案改良一下PureMVC,讓它更適用於C#,到時再將源碼一起發布。由於工作比較忙,可能要讓大家等上一陣子。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved