使用MVP模式

4
我有一个使用MVC模式创建的Web应用程序,但我正在尝试适应MVP模式。
我正在使用GWTPlatform库,已经将一些代码迁移到了Presenter和View中。然而,我没有看到任何全面的资料来解释如何处理Model部分。在我的MVC模式中,我将Model放在控制器中(在MVC中),并且视图会监听Model的变化以更新视图。例如,当打开“用户页面”时,控制器会更新Model,例如触发fireUpdateUser()函数。
如果我已经有远程服务RPC(例如UserService,UserServiceImpl),那么我该如何在MVP中实际处理Model呢?使用Gwtplatform,我只需在presenter的onReset()函数中放置一个RPC调用,然后基本上执行getView().getSomething().setValue(something)以更新相关联的View。在这种情况下,我根本不需要使用任何Model吗?此外,EventHandler和Activities的目的是什么?
2个回答

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();
  }
}

您的服务将由演示者调用。因此,工作流程是演示者 -> Dao(模型) -> View(由演示者更新)。
请看这个电子书,它会给您一些想法。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接