mvp设计模式 - 问题

时间:2010-06-16 11:54:05

标签: design-patterns mvp

当我有一个仅在我的视图中更改某些内容的按钮时(例如,如果我按下它会出现一些文本),我可以用我的视图将其整个代码写入文件中,还是应该包含此按钮的事件处理主持人?这对我来说是个问题,因为我不知道,如果演示者处理视图中的所有事件或只处理这些事件,这会改变模型中的某些内容吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

Presenter仅处理更改模型的事件。但是,每个程序员都决定应该对模型进行什么,以及什么完全属于视图。

想象一下这个任务,你需要制作2个按钮。第一个按钮从数据库加载数据并显示它,第二个按钮将页面的颜色更改为某个随机值。有两种方法可以实现它:

  1. 模型将LoadedData loadedData Color color。 Presenter会以这种方式管理这两个按钮。
  2. 可以确定颜色是演示部分的一部分,与模型无关。这样 - 模型中就没有颜色,所有随机颜色生成和按钮均匀处理都会出现在视图中。
  3. 所以,总结一下,如果你想/需要/决定将该文本放入模型中 - 演示者可以而且应该管理该按钮。但是,如果该文本独立于主逻辑并且是演示文稿的一部分(某些设计元素) - 则不应将其放入模型中,也不应由演示者管理。

答案 1 :(得分:0)

我认为这取决于你的舒适感。 就个人而言,我更喜欢被动视图的实现,但如果我做对了, 被动视图和监督控制器都规定了视图 应该由Presenter更新(除了案例中的简单数据绑定) 监督控制员)。 另一个例外是,如果您的视图是Web表单,并且您希望通过javascript更新它的客户端。

您可以查看以下内容:

http://msdn.microsoft.com/en-us/library/ff647543.aspx

您可以在其中找到段落:查看更新

“当模型更新时,视图也必须更新以反映更改。视图更新可以通过多种方式处理.Model-View-Presenter变体,被动视图和监督控制器,指定不同的实现方法查看更新。

在被动视图中,演示者更新视图以反映模型中的更改。与模型的交互仅由演示者处理;视图不知道模型的变化。

在监督控制器中,视图直接与模型交互以执行简单的数据绑定,可以在没有演示者干预的情况下以声明方式定义。演示者更新模型;它仅在需要以声明方式指定的复杂UI逻辑的情况下才操纵视图的状态。复杂UI逻辑的示例可能包括更改控件的颜色或动态隐藏/显示控件。“

希望它有用

利玛