Android中rest模型到域模型的映射
我希望将我的域模型和rest模型分开,这样我就不必担心在RESTAPI更改时更改域模型。此外,通过将rest模型转换为域模型,我可以使用UI友好的格式 我使用改型来使用RESTfulWeb服务。在onResponse()中,我将rest模型映射到域模型。我讨厌在主线程上实例化一堆对象。有哪些干净的方法可以不在主线程上映射Android中rest模型到域模型的映射,android,domain-driven-design,retrofit,Android,Domain Driven Design,Retrofit,我希望将我的域模型和rest模型分开,这样我就不必担心在RESTAPI更改时更改域模型。此外,通过将rest模型转换为域模型,我可以使用UI友好的格式 我使用改型来使用RESTfulWeb服务。在onResponse()中,我将rest模型映射到域模型。我讨厌在主线程上实例化一堆对象。有哪些干净的方法可以不在主线程上映射 String username = "test"; Call<User> call = apiService.getUser(username); call.enq
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
}
});
String username=“test”;
Call Call=apiService.getUser(用户名);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
int statusCode=response.code();
User=response.body();
//要将rest模型转换为域模型以供我使用吗
Account=AccountMapper.map(用户);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
//由于请求失败,此处记录错误
}
});
通常您需要一个转换器。转换器的工作是将外部Api解释为域上下文/模型。转换器可以实现为“工厂”。您将正确的参数传递给factory方法,它将返回您的域理解/可以使用的内容
现在,当您说“不在主线程上实例化”时:听起来您已经回答了自己的问题,因为这听起来像是建议通过线程进行并发。除非您同时启动一个新线程,否则您可以移动代码,但您将始终处于“主”线程上。收到响应后,只需调用map{someMapper().map(from,to)} 以下是所有地图绘制者的通用界面:
interface Mapper<FROM, TO> {
fun map(model: FROM): TO
接口映射器{
趣味地图(型号:FROM):至
}您可以查看此处了解可能的副本: