【问题标题】:Using the MVP pattern使用 MVP 模式
【发布时间】:2012-04-14 16:32:34
【问题描述】:

我有这个使用 MVC 模式制作的 Web 应用程序,但是我正在尝试适应 MVP 模式。

我正在使用 GWTPlatform 库,我已经迁移了一些代码,主要迁移到 PresenterView。但是,我还没有看到任何全面的材料来解释如何实际处理 Model 部分。在我的 MVC 模式中,我在控制器中有模型(在 MVC 中),视图监听模型中的更改以更新视图。模型由控制器更新,例如 fireUpdateUser() 函数由于打开“用户页面”而被触发,例如然后更新模型。

如果我已经有远程服务 RPC(例如 UserService、UserServiceImpl),我如何实际处理 MVP 中的模型;使用 Gwtplatform,我可以在演示者的 onReset() 函数中放置一个 RPC 调用,然后基本上执行 getView().getSomething().setValue(something) 来更新关联的视图。在这种情况下,我根本不需要使用任何模型?另外,EventHandler 和活动的目的是什么?

【问题讨论】:

    标签: java gwt mvp gwt-platform


    【解决方案1】:

    在您的服务中,您可以注入处理您的数据(模型)的DAO 对象。您通常有一个接口及其实现。

    public interface IMyDao {
        List<String> getAllObject();
    }
    
    public class MyDao implements IMyDao {
        public List<String> getAllObject() {
            List<String> os = new ArrayList<String>();
            // DB access or Datastore (Sample code)
            os = datastore.query(...);
            return os;
        }
    }
    

    为您服务

    public class ServiceImpl implements Service {
    
      private final MyDao dao;
    
      @Inject
      public ServiceImpl(final MyDao dao) {
        this.dao = dao;
      }
    
      public List<String> getAllObject() {
        // Some processing
        return dao.getAllObject();
      }
    }
    

    演示者将调用您的服务。所以工作流程是 Presenter -> Dao (Model) -> View(由 Presenter 更新)。

    看看ebook,它会给你一些想法。

    【讨论】:

      【解决方案2】:

      我建议你阅读这篇文章,它们描述了 GWTPlatform 的基本概念,以及使用它的示例:

      【讨论】:

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