2010-01-03 89 views
0

我有一个分层体系结构如下;MVP中的模型 - 事件

介绍
服务
业务
数据

如果我实现MVP的表现我的理解是,服务层代表“M”,即模型,是我的理解是否正确?如果是这样,从我对MVP的解释中,这个模型可以引发我的演示者会赞同的事件。这是否意味着我的服务层会引发事件?

修订

这个问题已经被观看的次数,但并没有引起任何意见或答案,如果有什么不对的问题,请评论,因为我想获得一个答案这个。谢谢。

回答

0

MVP设计的View Presenter部分背后的基本思想是该视图是轻量级的。大部分人们在表格和控件中加入的逻辑都存在于Presenter中。 Presenter是设计的中心站。检索数据,更新模型和引发事件,让应用程序的其他领域知道事情已经发生了变化。该模型主要关注所需数据的存储和检索。

使用MVP设计的关键问题是如果我撕掉Forms X并将其替换为Forms Y,会发生什么?如果您发现自己对演示者进行了彻底的改变以反映新的UI,那么很可能它不是一个干净的MVP设计。

+0

@RS康利感谢您的回应。你告诉我的是完全合理的。当View Presenter更新模型时,如何将这种变化通知给可能处于活动状态的其他感兴趣的视图/演示者,如何处理该问题。如果我有一个显示客户列表的视图,当客户被双击时允许编辑客户详细信息,我们说客户编辑的主持人会提出一个事件来广播该客户已更新,并且其他主持人会作出反应参加这个活动?这是事件聚合器进来的地方吗? – David 2010-01-05 21:35:55

+0

不要将设计视为具有多个主持人视图的单一模型。这是一个模特,主持人将多个视角悬挂在主持人面前。现在内部演示者布局可以有不同的类支持每个视图。演示者也可以有多个内部层。 在我的CAD-CAM中,我有一系列支持每个视图的UIxxx类。下面是一系列图书馆没有任何命令使用命令设计模式。以下是我称之为管理整个UI的UIForms的内容。 – 2010-01-06 14:00:54

+0

每个UIxxx类向Uiforms注册自己。 UIxxx类然后使用各种命令来操纵模型,绘制,并且最重要的是对于您的问题,它可以触发命令来导致其他视图进行更新。更新命令使用UIForm,然后负责更新。 UIForms和UIxxx类之间的关系使用观察者设计模式。然后每个UIxxx类更新与之关联的视图。 只有一个底层,所有当前的演示者注册自己。使用该图层来管理更新。 – 2010-01-06 14:05:21