pin*_*ngu 8 java soa design-patterns composition dto
在SOA中,如果一些DTO类具有一些重复的字段.使用Composition或Inheritance是否更好,所以没有重复或只使用一个封装所有字段的DTO类.随着我的DTO类的增长,我看到很多重复的字段名称和Sonar报告是哭泣的家禽.什么是最好的方法(或替代方案).
例如
public class DocDto{
private Long id;
private String name;
private String docType
}
public class DocReviewDto{
private Long id;
private String name;
private String status;
private String comment;
}
Run Code Online (Sandbox Code Playgroud)
Lew*_*och 12
"一个DTO类"的方法几乎肯定是坏的.它闻起来像神级.许多权威人士完全谴责DTO.你可以从一些基类继承,但对于值对象,它并不是真的合理.组成相同.它使您的代码更复杂.在调试"DocReview"流程时,您必须查看两个,三个或更多DTO类,以便使用这两种方法来理解它.Bleagh!此外,每个DTO通常位于单独的语义域中:"Doc"不是"DocReview".因此,明显的"共同"元素实际上并不常见.他们只是共享一种实现类型; 他们的意思完全不同.
当成员类型本身是复合的时,例如,如果许多域共享a的概念Identifier,则可以将该类型用于组合到这些域的DTO中.在你的例子中,你可能有
public class Identifier {
long id; // should be a 'String', actually
String name;
}
public class Doc {
private Identifier identifier;
private String docType
}
public class DocReview {
private Identifier identifier;
private String status;
private String comment;
}
Run Code Online (Sandbox Code Playgroud)
这里的关键是Identifier在两个域中在语义上是等价的,因此将它作为一个通用类型是有意义的.否则你不会这样做.
边栏:"Dto"(或"DTO")作为后缀并不是很好的命名,真的.