請注意,我是MVC的新手。MVC設計問題
我試圖讓我的代碼儘可能多地分離和測試。 我有一個文本框和按鈕的視圖。 我想在輸入新文字時啓用此按鈕並遵守特定條件。
理想情況下,我希望這個邏輯決定按鈕是否啓用或不在視圖之外,以便它可以進行單元測試。
我對MVC的理解如下: 在我看來,我有一個參考我的控制器。 在我的控制器中,我有一個對我的模型的參考。 在我的模型中,我有一個對我的視圖的引用。
你能告訴我,以下是一個好的設計。 我給模型buttonEnabled添加了一個布爾值。 事件的順序是這樣的: 文本輸入在文本框中,文本框中有一個監聽器。監聽器在Controller上調用textChanged方法,控制器檢查是否啓用按鈕,然後通過setButtonEnabled訪問器設置Model的buttonEnabled。 訪問器更改buttonEnabled的值,並在視圖上調用buttonEnabledChanged()(該方法公開該方法) 這個想法是該視圖是模型的特定觀察者,並且該模型是一個可理論上具有多個視圖的observable ,並且可以在它們全部上調用buttonEnabledChanged()。
請讓我知道您的想法。
另請參見此[回覆](http://stackoverflow.com/questions/3072979)。 – trashgod 2011-04-15 13:32:19
在你描述的上下文中,我寧願使用MVP(P,主持人,將包含啓用按鈕的邏輯)而不是MVC。 – jfpoilpret 2011-04-18 09:22:58
在我看來,上面的答案是擊敗了分離的目的,儘管這是一個很好的解釋。但是這個例子與GUI緊密結合,以至於無法進行單元測試。 – Charbel 2011-04-18 09:32:10