我正在用java重构一个代码库。因为业务对象和数据库对象有不同的包,但是它们中的大多数属性都是相同的,这是在sonar报告之后我注意到的。所以我想创建一个公共的父类,然后所有的bo(业务对象)和do(对象)都可以扩展它?我的疑问是,对于bo和do对象都有一个公共父类是一个好主意吗?如果是,那么我可以把这个公共父类放在哪里?在bo包中,是否打包或创建一个新的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中都有一个父母,这扩展了共同的父母,然后这些类扩展了各自的父母?
1条答案
按热度按时间yzuktlbb1#
像这样使用继承,虽然一开始很有吸引力,但这并不是一个好主意,因为它会导致非常不灵活的代码。虽然在开发的早期阶段,它看起来不错,因为它减少了代码,业务需求总是发生变化,业务对象可能开始与数据库实体分离。
如果您熟悉坚实的设计原则,那么s代表单一责任,这意味着一个类应该有一个(而且只有一个)改变的理由。按照您的建议使用继承意味着父类可能有多种原因需要更改,即当数据库结构更改和/或业务域更改时。
业务对象应该为数据库实体提供不同的用途。在面向对象开发中,业务类封装了数据和行为。数据库实体通常只包含数据。应用程序往往在不同风格的pojo-dto<->业务对象<->dao之间有Map。这确保您的应用程序能够处理大多数项目在某个时间点必须处理的更改。