【发布时间】:2014-01-17 03:31:59
【问题描述】:
我们在这里的一家 Java 商店工作,我们的 Web 应用程序使用 MVP 架构模式的实现。我们的经理来自 .NET 世界,在那里他接触过MVVM 设计模式。我们的经理提倡改变我们的 MVP 实现,包括按照 MVVM 的传统,通过观察者设计模式将 Presenter 与其视图解耦(或松散耦合,取决于您的解释)。我更认为 Presenter 和 View 一起工作以实现一个共同的目标,因此应该耦合。
支持更改的参数之一是对演示者进行单元测试的能力。如果 Presenters 只将视图视为观察者,那么争论就可以了,那么它们可以更容易地进行单元测试。但是与他们的观点强烈耦合的演讲者并不一定难以测试。如果 View 使用Humble View 范式,那么它可以被模拟。最后,可测试性应该是良好设计的标志,而不是设计的驱动力。
我的经理用来支持视图和演示者分层的另一个论点是 MVVM 的假定成熟度。因此,我们应该遵循 MVVM 的教义并适应其对 MVP 的实现。如果我错了,请纠正我,但 MVVM 强加了视图和演示者的(人工)分层,以促进其在控件中的数据绑定。
你能帮我们看看这里的光吗?为什么要使用解耦模型并为此付出代价?我没有看到好处。奥卡姆剃刀说我需要使用解耦的论据,而测试似乎不是其中之一。
澄清:我在这个问题中真正要寻找的是可以打破平衡的论点,支持不了解其观点并在以太中拍摄事件的演示者或有利于通过更直接的耦合了解其视图的演示者,例如简陋的视图接口或直接到类。请注意,演示者可以轻松地通过松耦合和紧耦合来提供多个视图。区别在于 Presenter 与之对话的接口:松耦合时,Presenter 与侦听器类(或事件总线代表)对话,而紧耦合时,Presenter 与视图接口对话。
【问题讨论】:
标签: design-patterns mvvm architecture mvp