【问题标题】:How to remove handlers from presenter in MVP pattern如何在 MVP 模式中从 Presenter 中删除处理程序
【发布时间】:2013-07-19 13:41:01
【问题描述】:

我正在我的 GWT 应用程序中实现 MVP 模式。在每次历史令牌更改时,我正在初始化演示者以获取各自的视图。如果用户导航到单个视图 GridView(比如)2 次,则相应的演示者 GridViewPresenter(比如)被初始化 2 次(根据 MVP 模式。如果我们不将演示者设为单例)。 喜欢

 Presenter presenter = new GridViewPresenter();

在这种情况下,此演示者中的所有事件都将注册并侦听 2 次。我们如何避免这种情况而不使我们的演示者成为单例。

【问题讨论】:

    标签: gwt mvp


    【解决方案1】:

    您必须跟踪演示者的生命周期(在切换到新演示者之前,处置当前演示者,以便它取消注册其处理程序)。

    或者,您可以使用 GWT 的 Places & Activities 微框架,它就是这样做的:您的活动具有显式的 startonStoponCancel(当异步启动时)。
    GWT-Platform(GWT 的一个MVP 框架)也有类似的生命周期。

    另一种选择是让您的演示者在其视图上添加处理程序:视图管理其事件处理程序,并通过表示为接口的合同通知演示者(演示者实现该接口);对于给定的视图,一次只能有一个演示者(这样,新的演示者覆盖前一个演示者)。
    管理您的 Presenter 生命周期的好处是,一旦不再使用 Presenter,就可以将其作为垃圾回收,而不是等待新的 Presenter 在单例/长期视图中取代他们的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多