2014-01-29 75 views
1

我正在用MVC模式開發一個帶extJS的應用程序,但我不確定在哪裏放置業務邏輯來保持它的可測試性。ExtJS 4 MVC結構與測試

讓我們看看下面的例子: 我有一個包含一些數字的商店。如果我點擊一個Button(Button1),我想要做一些計算,並希望在之後的彈出窗口中顯示結果。

這是我的方法: Button --onClick - > Controller1(事件監聽器) - > Controller2(從存儲中收集數字,進行計算)---> Controller1(異步調用結果)創建一個新的彈出框

當我這樣做時,我可以輕鬆地在Controller2中測試計算,因爲它與任何視圖都是絕對分離的。

這導致了兩種類型的控制器: - 與意見(事件偵聽器,並彈出引發劑) 交互控制器 - 控制器與業務邏輯

這是正確的做法?

+0

你現在真的想要什麼?爲什麼你需要兩個控制器來做這麼簡單的操作? – vino20

+1

@ vino20操作的簡單性應該不重要。 OP更多的是體系結構的問題,而不是如何完成特定的任務。 – existdissolve

+0

@existdissolve,我接受你的話。 – vino20

回答

1

好吧,這裏有一點爭論。內置於Ext JS中的vanilla MVC方法通常利用控制器來實現業務邏輯和視圖事件管理。所以,如果你想跟隨其中的許多Ext JS MVC教程,你可能會發現這種模式。

但是,其他人更喜歡將視圖更加分離,選擇一個ViewController類,比如你所建議的。你可能會檢查出DeftJS的一個很好的實現。 http://deftjs.org/

最終,我認爲這並不重要。我認爲你應該在某種程度上寫一個應用程序認爲:

  1. 如下幾個組標準約定的
  2. 對你有意義
  3. 作品
  4. 是可持續的,可擴展的

我認爲這兩種方法都很容易滿足這些要求(我已經完成了這兩項工作),所以最終我會認爲這取決於您的偏好以及您最喜歡的實施方式。