2016-03-05 130 views
0

我希望將我的域模型和休息模型分開,以便在休息API更改時不必擔心更改域模型。另外,通過將休息模型轉換爲領域模型,我可以使用UI友好的格式。在Android中將休息模型映射到域模型

我使用retrofit來使用Restful Web服務。在onResponse()中,我將其餘模型映射爲域模型。我討厭在主線程上實例化一堆對象。什麼是一些乾淨的方式來映射主線程?

String username = "test"; 
Call<User> call = apiService.getUser(username); 
call.enqueue(new Callback<User>() { 
    @Override 
    public void onResponse(Call<User> call, Response<User> response) { 
     int statusCode = response.code(); 
     User user = response.body(); 
     // Want to convert rest model to domain model for my use 
     Account account = AccountMapper.map(user); 
    } 

    @Override 
    public void onFailure(Call<User> call, Throwable t) { 
     // Log error here since request failed 
    } 
}); 
+0

可能的重複[如何從函數onResponse的Retrofit返回值?](http://stackoverflow.com/questions/34184088/how-can-i-return-value-from-function-onresponse-of-改裝) – theDmi

回答

0

通常你想要一個轉換器。轉換器的工作是從外部Api解釋你的域上下文/模型。轉換器可以實現爲「工廠」。你傳遞工廠方法的正確參數,它會返回給你的東西,你的域名可以理解/可以使用。

現在,當你說「沒有在主線程上實例化」時:這聽起來像你已經回答了你自己的問題,因爲這聽起來像是你建議通過線程併發。除非你同時啓動一個新的線程,否則你可以移動代碼,但你總是在「主」線程。