【发布时间】:2021-03-25 22:46:15
【问题描述】:
我正在重构 java 中的代码库。因为业务对象和数据库对象有不同的包。但是它们中的大多数属性是相同的,在声纳报告这一点后我注意到了。所以我正在考虑制作一个公共父类,然后所有 BO(业务对象)和 DO(对象)都可以扩展它吗?我的疑问是,为 BO 和 DO 对象拥有一个共同的父类是个好主意吗?如果是,那么我可以把这个共同的父类放在哪里?在BO包、DO包还是新建Commons包?
当前设计示例:
Package BO:
Class B01
{
int a
int b
//getter setter for a and b;
}
Class B02:
{
int a
int b
int c
//getter setter for a,b and c;
}
Package DO:
Class D01
{
int a
int b
int e
int lastUpdated
//getter setter
}
Class D02:
{
int a
int b
int g
int h
int lastUpdated
//getter setter
}
后续问题是,是否有可能在 BO 和 DO 中都有一个共同的祖父母,然后在 BO 和 DO 中都有一个父母,扩展共同父母,然后这些类扩展各自的父母?
【问题讨论】:
-
那你为什么要分离对象呢?如果这些只是没有业务逻辑的 POJO,那么您应该只拥有其中一个。如果有关联的业务逻辑,可以封装而不是继承。
-
这些只是 pojo,但它们共享一些(不是全部)属性相同。就像有 2 个业务 pojo 和两个数据库 pojo,但它们都有相同的公共属性和一些特定于该 pojo 的不同属性,所以这就是为什么有多个 pojo。业务 pojo 和数据库 pojo 有一些共同的属性
标签: java inheritance package sonarqube refactoring