2013-03-23 57 views
14

我想了解模型 - 视图 - 演示者和模型 - 视图 - 适配器模式之间是否有区别,以及 - 如果是这样 - 那是什么区别。我还没有找到任何比较/比较它们的在线资源,所以我甚至不确定它们是否真的不同。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 

适配器/演示者“知道”的视图和模型,但视图和模型不知道其他人比自己。

我希望我在这里完全缺少一个微妙的东西。它是什么?

回答

10

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

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

+1

或者短语另一种方式,在MVP中,视图意识到演示者,并且是观察和委派事件给演示者的活动方。在MVA中,视图不知道适配器,但反过来说,适配器是观察视图事件的活动方。 – hidro 2016-08-24 16:44:30