我想知道控制器從哪裏獲取用戶輸入(用於爲模型提供)。由於輸入媒體與用戶密切相關,因此不應該意識到獲取用戶數據的具體方式?但是,我怎樣才能從視圖中分離出控制器呢?他們的目的是否可以使兩者完全獨立?用戶輸入來自MVC體系結構?
例如: 當我有一個應用程序使用視圖curses庫它暗示它只能通過終端訪問。使用curses方法讀取控制器中的用戶數據會破壞封裝,但在視圖上調用方法與顯示模型無關。
我想知道控制器從哪裏獲取用戶輸入(用於爲模型提供)。由於輸入媒體與用戶密切相關,因此不應該意識到獲取用戶數據的具體方式?但是,我怎樣才能從視圖中分離出控制器呢?他們的目的是否可以使兩者完全獨立?用戶輸入來自MVC體系結構?
例如: 當我有一個應用程序使用視圖curses庫它暗示它只能通過終端訪問。使用curses方法讀取控制器中的用戶數據會破壞封裝,但在視圖上調用方法與顯示模型無關。
考慮讓視圖和控制器通過Observer pattern進行通信。 Controller使用View將自己註冊爲Observer。當用戶將數據輸入到視圖並按下Enter時,視圖將解釋數據並通知其觀察者有可用數據。控制器然後可以通過公共方法從視圖中獲取數據。
在MVC中,控制器從視圖中獲取其用戶輸入。
我認爲這個視圖應該在控制器上有一個回調,通過用戶輸入發送。在Web架構中,通過http請求將用戶輸入發送回服務器的能力提供回調。
就你而言,你的ncurse front應該可能有某種回調方法給控制器組件發回用戶輸入。
我不認爲這個視圖實際上與輸入數據有很大關係。如果您看到用戶直接與控制器通信,我發現MVC更容易可視化。控制器從用戶接收數據並將視圖發回。在許多系統中,視圖引擎自身有一些有限的更新方式(即文本輸入顯示在發送到控制器之前鍵入的內容)。但是對於任何MVC類型的體系結構,只要它們都能夠處理相同的數據,就可以用任何其他視圖替換任何視圖。
例如。輸入用戶名可以在任何支持輸入字符串的系統上完成。控制器接受一個字符串,因此可用於Web應用程序,終端應用程序或GUI應用程序。
那麼,
我會盡量讓你更具體。給你可以看到的ppl的模糊/抽象的答案,不掌握主題,並沒有幫助。
MVC - >模型視圖的Controler
有許多MVC實現的,我不知道你的情況,但我給你一個。
最常見的MVC實現的行爲這樣的..
視圖< - >的Controler < - >型號
在Web場景..
的看法是你的HTML頁面和數據輸入會以一種形式發生。
<form action=/home/createuser method=post>
...code goes here...
</form>
家將是你的控制器(一個名爲home的類),並創建一個在家中的方法。
public class Home extends Controller {
public void createUser(Userform f){
...create user...
}
}
該表單會將數據作爲參數提交給方法。如果是這種情況,Createuser會將它們處理成與模型交談並稍後保留數據。
如果View1有Button1,而View2沒有?控制器應該如何從兩個視圖中獲得它的輸入(點擊Button1)? – Kaerber 2014-07-28 20:57:28