我想知道上述两种模式之间的区别。当您考虑到在表示模型模式中需要同步代码并且该代码在表示模型本身中时,那么我认为这些模式非常相似。
两者都将事件委托(delegate)给演示模型/演示者。表示模型和演示者命令域模型并观察域模型。在发生更改时,它们都与 View 同步(因为表示模型中的同步代码在表示模型中)。
在我看来,不同之处在于,表示模型是 View 的抽象形式。它描述了 View 的状态和行为。因此它具有所有 View 状态信息的属性。并且此信息通过同步代码同步。 在被动 View 中,演示者不一定被视为 View 的抽象形式。因此演示者不一定具有表示 View 状态的属性。所以演示者不会“同步”状态(控件和演示者本身的属性)。相反,他只是将域数据“复制”(在更改时)到控件中。 所以区别本质上是 View 的抽象,表示模型提供,而在被动 View 中,表示器可以被视为域数据的数据映射器。
到目前为止还好还是我错过了一些重要的事情?
谢谢和最好的问候 帕特里克
最佳答案
我的理解是 Passive View 是 MVP 的一个变体,而 Presentation Model 是一个独立的模式。
正如您所强调的,Presentation Model 具有 View 的抽象表示,后来在 MVVM 中称为 ViewModel。 MVP 没有 View 的状态表示,演示者相应地调用 View 。被动 View 意味着 View 调用通常与任何领域概念无关,因此主要是原始类型。而监督 Controller 变体允许向 View 传递它可以解释的领域概念。
正如我所说,这只是我的理解。我很高兴得到纠正。
关于design-patterns - 演示模型与被动 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18534038/