2010-02-25 50 views
0

在MVC的通用意義上,視圖和控制器之間的關係通常預期爲M:1?也就是說,許多視圖將使用相同的控制器?但是一個視圖不會使用許多不同的控制器?或者,我應該能夠與任何控制器交換任何視圖,並使一切工作?我目前看到兩者之間有相當緊密的依賴關係,所以這不會與我目前的佈局...MVC:視圖和控制器的基數關係

我試圖設計一個類項目的東西,我不知道如何組織/設計我的觀點和控制器。

更新:到目前爲止我收到的答案有幫助,但不是確定性的。讓我們稍微擴展一下我的問題。回想起來,一個重要的方面是模型可以改變(戰略模式*)在一個實例中,模型可能會創建一個數據庫。另一方面,它可能會從數據庫中讀取。我最初的設計目標是獲得統一(儘管簡單)的視圖,以便能夠處理所有模型。

*我閱讀(here),可以將Controller視爲戰略模式實施。我的模型將以類似但獨立的方式實施。

這裏有一個快速(不完全)類的概念(給出的更新信息)的圖:

Class Diagram of my MVC implementation concept http://theopensourceu.com/wp-content/uploads/2010/02/MVC-2334703.png

回答

1

視圖確實不應該知道任何的控制器。在這方面,我想說,這種關係是不存在的。

視圖接收模型並顯示它。誰準備這個模型原則上是不相關的。

當然,在實踐中邊界有時會融化。由於某些原因,如簡化代碼依賴關係,視圖有時會了解一些關於哪些控制器燒燬了火情。但是如果你在談論純粹的概念討論,那麼不,在控制器和視圖之間沒有直接的聯繫。相反,他們通過中介進行交流,這是一種模式。

  ControllerX 
-------------------------------- 
Model1  Model2  Model3 
    |   |   | 
View1  View2  View3 

原則上可以由多個控制器輸出相同的視圖。如果一個控制器能夠實例化一個模型,那麼它非常有效。

0

我自己對MVC結構的看法是這樣的:

控制器 - 最重要的部分。如果你只需要使用一塊MVC,那就是這樣。我有我的控制器從模型中調用數據,然後將數據(以及我需要的任何其他位)傳遞給視圖(或嵌套視圖),然後將其發送給用戶。

也就是說,一個控制器可以使用許多模型和視圖 - 但不是相反。