你會遇到一些關於這樣做的最佳方式的爭論,但在一天結束時,你有兩個選擇。您可以讓模型從其他模型中提取需要的信息,也可以讓控制器傳遞所需的信息。
根據我已閱讀的內容,只要模型沒有任何控制器邏輯或查看邏輯,您就很好,因此讓該模型知道其他模型沒有任何問題。然而,其他人認爲,讓控制器傳遞所需的信息使得代碼更容易記錄,因爲您可以看到該模型需要來自其他地方的信息。儘管如此,我認爲這兩者都是有效的,你選擇使用哪一個可能會歸結爲個人偏好。
設計 - 控制器提供數據
ModelOne
ModelTwo
片段 - 控制器Proivdes數據
Controller {
function doWork() {
User user = ModelOne.GetCurrentUser();
Items[] items = ModelTwo.GetItems(user);
}
}
設計 - Model獲取數據
沫傑洛涅
ModelTwo
片段 - Model獲取數據
ModelTwo {
Items[] GetItems() {
User user = ModelOne.GetCurrentUser();
...
}
}
Controller {
function doWork() {
Items[] items = ModelTwo.GetItems();
}
}
所以,你說我應該引用Controller1內的兩個模型,然後在Controller1.GetItems()內我應該:1)調用Model2.GetCurrentUser()並獲取用戶; 2)調用Model1.GetItems(用戶)將它傳遞給用戶。對? – Stefano 2010-11-22 15:40:50
是的,如果這兩個模型將用於相同的流程中,我認爲在一個控制器中執行它是有意義的。或者,如果您需要連接到模型的控制器作爲抽象模式的一部分,則可以使用第三個控制器,該控制器對兩個控制器都有引用,並執行相同的操作。 – dain 2010-11-22 15:44:10