gpt4 book ai didi

theory - Model-View-Presenter 中的 Presenter 是否创建 View ?

转载 作者:行者123 更新时间:2023-12-02 08:20:09 27 4
gpt4 key购买 nike

如何在 MVP 中创建 View ? Presenter 是否总是创建它们(除了 subview 的 View 之外)?或者它是一个单独的第三方组件或应用程序或创建它们的东西?

我们还要补充一点,我可能会在 Dojo Toolkit/ExtJS(即 JavaScript)上执行此操作。

所以,我有这些代码行:

var v = new MyApp.view.User();
var p = new MyApp.presenter.User();

两条线到底应该去哪里?演示者是否实例化 View ,或者反之亦然?第一个实例是由什么实例化的?

最佳答案

这取决于...

MVP 的主要目标是将复杂的决策逻辑与 UI 代码分开,使两者变得更易于理解和维护。通常另一个目标是使演示器中的决策逻辑可测试。

Fowler 在 2004 年描述了 MVP 模式,他 retired it in 2006将模式拆分为 Supervising Conroller (SC)和Passive View (PV)。在SC中,View与Model绑定(bind),但在PV中则不然;在PV中,View只能由Presenter直接改变。

在 SC 和 PV 中,演示者必须更新 View 对用户对 View 所做的更改使用react,例如输入文本或按下按钮。当您让 View 调用 Presenter 上的方法时,就会出现您所描述的问题,因为 View 需要对 Presenter 的引用,反之亦然。如果您这样做,您只需决定谁来启动这一切。选项有:

  1. View 创建 Presenter 的一个实例。当 View 加载时,它会通过 Presenter 上的初始化函数将自身传递给 Presenter。
  2. 相反:Presenter 创建 View 并通过 View 的初始化函数将自身传递给 View。
  3. 您引入了第三个对象,该对象创建 View 和 Presenter,将它们连接在一起并初始化它们。

所有选项都可以让您实现关注点分离和提高决策逻辑的可测试性的“MVP 目标”。我不认为这些方法在理论上是正确或错误的——您只需选择最适合您使用的技术的方法即可。最好在整个申请过程中保持一致的选择。

关于theory - Model-View-Presenter 中的 Presenter 是否创建 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6248992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com