2012-04-14 80 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,它會給你一些想法。