【问题标题】:Session State with MVP and Application Controller patterns具有 MVP 和应用程序控制器模式的会话状态
【发布时间】:2009-11-30 01:18:40
【问题描述】:

我已经为开发创建了一个 MVP(被动视图)框架,并决定采用应用程序控制器模式来管理视图之间的导航。这是针对 WinForms、ASP.NET 和 WPF 接口的。

虽然我不是 100% 相信这些视图技术真的可互换,但这是我目前的目标,因此我的 MVP 框架非常轻量级。

我正在努力适应的是“业务对话”的概念,它需要 (a) 在视图的生命周期内维护状态信息,或者更可能的是 (b) 在多个视图中维护用例的生命周期(业务对话)。我希望状态管理成为框架的一部分,因为我不希望开发人员担心它。他们需要做的就是“开始”对话,“注册”对象,其余的工作由框架完成,直到“结束”对话。

有人对如何将其融入 MVP 有任何想法(模式)吗?我在想它可能是应用程序控制器职责的一部分(委托给对话管理器对象),因为它知道当前状态以便将用户发送到下一个视图......但后来我认为这可能取决于演示者开始和结束对话,然后由演示者管理对话和为该对话注册的对象。不幸的是,这意味着演示者不能用于不同的对话......所以这个想法似乎不正确。

如您所见,我认为没有一个简单的答案(我已经找了一段时间)。那么其他人有什么想法吗?

【问题讨论】:

    标签: mvp session-state state


    【解决方案1】:

    如果仅涉及用户界面,则支持业务对话所需的类应驻留在演示器中。否则它应该在Model和Controller中从View到Presenter再到Model。关于商务对话的信息以另一种方式流动。我怀疑它可以只存在于 Presenter 中。

    由于所有视图都可以访问 Presenter,因此您可以构建支持对话的对象,以便它们可以跨多个视图进行维护。

    请记住,视图是了解您的软件中存在哪些数据的窗口。他们很少做其他显示数据,并将用户交互传回执行逻辑的演示者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      相关资源
      最近更新 更多