|
|
1
6
我觉得你在质疑这件事太好了。 你缺少的可以帮助你的是一个控制器。 退房 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 举个例子。 基本上,控制器是模型和视图之间的中介。它“控制”应用程序。您的视图应该知道的唯一一件事是传递给它的数据以及如何显示它。你的模型唯一应该知道的就是数据。控制器将这两者联系在一起,并包含操作数据并准备将其传递给视图的业务逻辑。 使用这种设计所得到的是一个loosley耦合的、易于测试的应用程序。它真的很优雅。 干杯, 迈克 |
|
|
2
2
这将在模型和视图之间创建不必要的绑定。但也要考虑一个无限循环,你可以进入。 如果模型也被视图以外的东西(可能是Web服务)更新了呢?然后,通过Web服务对模型进行更改将导致视图发生更改,因为视图将观察模型。而且,当模型也在观察视图时,视图中的更改也会触发模型中的更改。看到这里的递归吗?绕过它并不太困难,但会导致一个非常糟糕和无法维护的设计。 |
|
|
3
1
为了将模型和视图连接在一起,已经提出的一个解决方案是添加一个控制器,以便实现完整的模型视图控制器组件集。这将在所有三个组件之间引入一个非常紧密的耦合,从单元测试的角度来看,这并不是真正需要的。 另一种选择是考虑 Model-View-Presenter pattern . 演示者将是模型和视图之间的中介,并将根据视图的任何输入更新模型,还将负责根据模型中的任何更改更新视图。对于单元测试,您可以用一个模拟视图来测试模型,或者用一个模拟模型来测试视图(或者两者都模拟,只测试演示者)。 |