你会遇到一些关于这样做的最佳方式的争论,但在一天结束时,你有两个选择。您可以让模型从其他模型中提取需要的信息,也可以让控制器传递所需的信息。
根据我已阅读的内容,只要模型没有任何控制器逻辑或查看逻辑,您就很好,因此让该模型知道其他模型没有任何问题。然而,其他人认为,让控制器传递所需的信息使得代码更容易记录,因为您可以看到该模型需要来自其他地方的信息。尽管如此,我认为这两者都是有效的,你选择使用哪一个可能会归结为个人偏好。
设计 - 控制器提供数据
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