这更像是一个理论问题而不是实际问题。
我们有一个分层架构,有点像:
UI <--DTO1--> UI_JavaHandler <--DTO2--> Backend
DTO1 需要比 DTO2 多一点数据,并且需要一个额外的字符串。那么问题来了,DTO1应该扩展DTO2还是应该封装DTO2呢?在第一种情况下,UI_JavaHandler 中的代码将是:
public void acceptAction(DTO1 dto1) {
//do something with dto1.getString();
backend.call(dto1);
}
而在第二种情况下:
public void acceptAction(DTO1 dto1) {
//do something with dto1.getString();
backend.call(dto1.getDto2());
}
扩展 Java DTO2 工作正常,但我不喜欢仅使用扩展来添加新数据的想法。我习惯于使用扩展来添加新的行为(比如 Animal 被 Dog 和 Cat 扩展)。由于聚合可以使用相同的效果,我们不应该使用扩展,但我没有强烈反对这种 (ab)use(?) 的论据。
另一方面,我可能完全错了。
你对此有什么看法?谢谢你。