2010-01-05 35 views

回答

3

这实际上取决于你想要完成的细节。表面上,如果需要的话,一个模型可以与另一个模型进行交互。只要确保模型与其他模型进行交互的原因是经过深思熟虑的,并且建模交互模型不会更好地用于交互模型。

+1

“通过模型更好地服务于交流互动”这是什么意思?谢谢......对此仍然陌生 – johnnietheblack 2010-01-05 21:53:15

+1

他可能意味着直接与对方交谈的模型应该彼此有直接关系。像一个模型是另一个模型的组成部分。完全不相关的模型最好使用调解器,如控制器。 – 2010-01-05 21:56:03

+0

@julson ...所以在我的身份验证类与用户类谈话的例子...并不真正符合这一哲学? – johnnietheblack 2010-01-05 21:58:24

3

不同的模型类交互就好了。大多数复杂的对象不是完全独立的。与任何良好的OO代码一样,这些类应该使用公共方法,而不是将它们的实现公开给对方,但除此之外,它都是好的。

+0

你是什么意思的“揭露他们的实施”?谢谢! – johnnietheblack 2010-01-05 21:52:42

+0

@johnnietheblack:如果ClassA调用ClassB,ClassA应该知道ClassB应该做什么,但不知道它是如何做到的。例如,如果某人出于某种原因将某个ClassB的内部变量从Hashtable修改为HashMap或TreeMap,则根本不应该影响ClassA。实际上,这意味着使用公共getter和setter来获取私有属性,而不是直接访问protected或public属性。 ClassB需要控制对其属性的更改。 – 2010-01-08 18:18:16

2

他们当然可以相互了解,并利用彼此的功能。通常,最佳实践将保持单向,但并非总是如此。像dj_segfault说的那样,这种交互应该通过公共方法。请务必阅读Dependency injection;只要所有公共方法仍然表现相同,改变一个班级的内部运作不应该打破另一个班级的内部运作。