我有一些嵌套对象。我们称他们为A,B和C.
public class A {
private String name;
private String desc;
//......{some other fields}
private List<B> bList;
}
public class B {
private String name;
private String desc;
//......{some other fields}
private List<C> cList;
}
public class C {
private String name;
private String desc;
......{some other fields}
}
现在我想只映射这些对象的一些属性。让我们说我只需要来自A的B的名称和列表,只需要来自B的C列表和仅来自C的desc。 所以我创建了DTO对象。
public class ADTO{
private String name;
List<BDTO> bList;
}
public class BDTO{
List<CDTO> cList;
}
public class CDTO{
private String desc;
}
我会手动将A映射到ADTO,B映射到BDTO,C映射到CDTO,代码类似于:
private ADTO map(A a)
ADTO adto = new ADTO();
List<BDTO> bDTOList = new ArrayList<>();
adto.setName(a.getName());
for (B b : a.getBlist()){
BDTO bdto = new BDTO();
bdto.setCList = map(b.getCList());
bDTOList.add(bdto);
}
adto.setBList(bDTOList);
return adto;
}
private List<CDTO> map(List<C>){
........ANOTHER BORING MAPPING
}
有没有更简单的方法(可能有一些设计模式)来实现这样的任务?想象一下,如果我们有更大的类或更多的对象来映射更深的嵌套会发生什么。编写这些代码只是为了显示/隐藏某些字段。 附:我需要写至少3个不同的观点&#34;这样的对象和#34;观点的数量&#34;可以在未来增加。所以我正在寻找解决方案来添加新的&#34;视图&#34;将来更容易。