Model-View-Presenter和Model-View-Adapter之间有什么区别?

Emd*_*dot 15 mvp model-view-adapter

我试图了解Model-View-Presenter和Model-View-Adapter模式之间是否存在差异,如果是这样,那么差异是什么.我没有找到任何比较/对比它们的在线资源,所以我甚至不确定它们是否真的是截然不同的.

我发现它们的描述听起来与我完全相同.从我收集的情况来看,在这两种情况下,控制流程基本上是:

View <-- Adapter/Presenter --> Model
(where Adapter/Presenter can also respond to events from View and Model)

View: the UI
Adapter/Presenter: main logic; mediator between the UI and the data model
Model: the data model
Run Code Online (Sandbox Code Playgroud)

Adapter/Presenter"知道"视图和模型,但视图和模型不了解除自己以外的任何人.

我希望这里有一个我完全不知道的微妙之处.它是什么?

ric*_*mer 10

我唯一能想到的是MVA通常与视图和模型之间有多个适配器有关.虽然没有什么可以阻止你在MVP中做到这一点,但我认为MVP意味着强大的黑社会.

更新(多年后):回想起来,我认为关键的区别在于控制流程.在MVP中,View触发/创建/调用Presenter,Presenter委托给模型并响应View.在MVA中,当消息进入时,选择适配器,然后在模型和视图之间进行调解.因为MVP视图触发/创建/调用Presenter,所以在多个Presenter之间进行选择(选择适配器)并不是一件简单的事情.

  • 或者换句话说,在 MVP 中,视图知道演示者,并且是观察事件并将事件委托给演示者的活动方。在 MVA 中,视图不知道适配器,反之亦然,适配器是观察视图事件的主动方。 (2认同)