2012-10-29 47 views
2

我建立使用JavaScript(WinJS)和HTML一個簡單的Windows 8 LOB應用程序。在應用程序中,我不想有任何第三方依賴項。在決定應用程序結構時,我正在爭論哪種模式最適合該技術和WinJS框架。WinJS:做MVVM,MVP或MVC適合用它更好?

我使用這些模式的主要優勢/劣勢的初步想法是如下。

MVVM

MVVM

  • 臨:在視圖模型業務邏輯的完全分離,使得(單元)的BL容易
  • 精讀的測試:WinJS只有一個時間和單向數據綁定是開箱即用的,雙向數據綁定和命令(綁定事件)不是。這些必須以自定義的方式實現(如果想在視圖上堅持主要的聲明式語法,可能會變得棘手)。

MVP

MVP

  • 臨:演示仍與視圖邏輯包含所有業務邏輯在一起,並可以是由本身測試(單元)。這種方法不需要數據綁定。
  • 缺點:無論是查看和演示代碼會比MVVM的情況下,更詳細的,因爲他們現在必須通知對方的狀態變化。視圖需要將事件轉發到演示者,並且演示者必須在其狀態更改時更新視圖。

MVC

MVC

  • 臨:視圖是非常輕便,不需要數據綁定這種方法無論是。控制器必須註冊和處理輸入事件(例如鍵盤和鼠標事件)以及包含業務邏輯。 Compated到視圖模型中MVVM和演示在MVP這個類將是最臃腫和稍微更難以(單元)測試。

在此基礎上,我會選擇MVP建立這個程序。你是否同意這一點或相矛盾?

+3

民意調查或可能引發爭議的問題被認爲是主題。 – mydogisbox

+0

沒有「最佳」方法。這完全取決於你的用例。 –

回答

2

我會後的東西,因爲我喜歡你解釋了不同的設計模式和良好的圖形方式(順便說一句,你有沒有對這些源?你應該包括它)

您的MVVM con是,雙向更新將不得不以自定義的方式實施。但是,就MVP範式而言,似乎你必須以自定義的方式來做到這一點。如果你使用MVP,你是否根本不使用任何數據綁定?我會說,與MVVM一起,找出解決WinJS問題的方法。我對WinJS並不熟悉,但似乎可以將其封裝在自定義對象/屬性中,並觸發已更改的事件以某種方式處理數據綁定。