使用MVP模式

时间:2012-04-14 16:32:34

标签: java gwt mvp gwt-platform

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

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

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

2 个答案:

答案 0 :(得分:3)

在您的服务中,您可以注入处理数据(模型)的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 - &gt; Dao(模型) - &gt;查看(由演示者更新)。

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

答案 1 :(得分:0)

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