2012-04-14 87 views
4

我有这个Web应用程序,我用MVC模式,但我试图适应MVP模式。使用MVP模式

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

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

回答

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 - > Dao(Model) - > View(由演示者更新)。

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