2012-03-31 47 views
4

我有兩個控制器:一個用於查看單個玩家,另一個用於查看團隊。我現在擁有它,球隊由一堆球員模型組成。MVC - 模型是否可以由其他幾個模型組成?

我是MVC的新手,在閱讀過的所有內容中,我還沒有看到模型是由其他模型組成的。有沒有另一種方法來處理這種情況,或者這看起來像是一個非常標準的實現?

+0

你需要更具體的東西的意見? – kasavbere 2012-03-31 22:38:21

+1

模型是您的應用程序。它包含所有相關部分來解決您爲其構建的問題。 V和C只是一個愚蠢的界面。 – Gordon 2012-03-31 22:56:29

回答

2

模型不是「事物」或「類」。它是一個圖層。

模型層由多個元素組成。最重要的類型的兩個是域 對象   [1]   [2]數據訪問對象(通常爲DataMappers   [1]   [2]模式實現)。第三種結構是服務,但我會盡量保持簡單。

域對象是業務邏輯與模型層相關的地方。不僅有可能有包含其他域對象的域對象,它通常是最好的方式去。這裏是一個小例子:

$group = $this->modelFactory->buildObject('group'); 
$mapper = $this->modelFactory->buildMapper('group'); 

$group->setName('wheel'); 
$mapper->fetch($group); 

$user = $this->modelFactory->buildObject('user'); 
$user->setName('foobar'); 
$user->setHomeDir('/home/user'); 
$user->setShell('/bin/csh'); 

$group->addUser($user); 
$mapper->store($group); 

您也可能從閱讀this topic受益。

1

當然!這是面向對象編程!

+1

我想了很多,謝謝。 – Wex 2012-03-31 22:35:51

3

是的,千倍是!這就是依賴注入框架(Robotlegs和Swiz)的工作方式。他們有一個Injector,它可以作爲Model和Factory的組合來提供View或Command所需要的位(大多數情況下,他們也沒有大型單片控制器的想法)。

+0

聽起來像一個調試噩夢 – 2012-03-31 22:49:08

+1

許多小類(國際海事組織和許多高級開發人員的意見)比幾個巨型的調試更容易調試。他們當然更容易進行單元測試。 – 2012-03-31 23:58:34

+0

我一直在PHP中使用DCI實現。他們仍然看起來大多像榮耀的靜態註冊表。 – 2012-04-02 04:38:13

0

一個團隊自然是一個具有一些附加數據(名稱,經理等)的球員集合。我認爲這應該沒問題。

0

鑑於您的問題,您將模型稱爲單個實體(例如用戶模型)。如果只考慮模型並忘記應用程序,那麼該模型實際上就是這個詞所表達的概念模型。

在問題領域模型的解決和軟件工程可以作爲興趣域的概念模型(通常 被稱爲問題域) 思想,它描述了各種實體, 它們的屬性,角色和關係,以及管理包含該問題 域的模型元素的完整性的限制。

http://en.wikipedia.org/wiki/Domain_model

的心理模型捕捉思想中存在的問題域,而概念 模式代表「的概念」(實體)和它們之間的關係。 計算機科學領域的概念模型也被稱爲 域模型。

http://en.wikipedia.org/wiki/Conceptual_model_(computer_science

回答你的問題:你的域模型將與隨後之間的關聯組成的實體,換句話說,一個單一的實體可以包含其他實體(協會或聚集的集合的組合物)。

域模型創建互連對象,其中每個對象 表示一些有意義的個體的纖網,無論是大如 公司或者小如一個定單表格上的單條線。

http://martinfowler.com/eaaCatalog/domainModel.html

爲了它變成別的東西了一層,你需要從OOA(面向對象分析)的OOD(面向對象設計)跳。

面向對象的分析(OOA)適用對象的建模技術來 分析系統的功能要求。面向對象 設計(OOD)闡述了分析模型以生成實現 規範。 OOA關注系統的功能,OOD關於系統如何實現的功能。

因此,牢記 「模型」 關鍵詞的兩個含義。它可以是問題領域的心智模型,也可以是描述心理模型如何在技術上實現的應用程序層。

相關問題