现在有一个 super BaseService,它有两个子类:CompanyService、PersonService
BaseService (Abstract):
- CompanyService
- PersonService
现在出现了一个新的情况,上面的设计无法适应,所以我想添加一个新的子类来实现具体的逻辑,
BaseService(Abstract)
- CompanyService
- SpecificCompanyService
- PersonService
- SpecificPersonService
但是SpecificCompanyService
和SpecificPersonService
逻辑是相同的,不需要重复。所以想再次提取一个父类(super class)
CompanyService / PersonService:
- BaseSpecificService (Abstract):
- SpecificCompanyService / SpecificPersonService
但是如何动态扩展 diff 父类呢?例如BaseSpecificService 可以动态扩展 CompanyService 或 PersonService。
SpecificCompanyService extends BaseSpecificService extends CompanyService
SpecificPersonService extends BaseSpecificService extends PersonService
现在我的解决方案只是添加一个SpecificUtils
并将通用逻辑放入SpecificUtils中。这样的话,utils中的方法需要的参数就多了,但是如果在抽象父类中共同登录,那就简单多了。
附注。
背景:一开始只有一个调度任务的情况,例如每隔10分钟将变化的公司、人员从Oracle同步到ElasticSearch,但现在我想支持这种情况,即只将特定时间范围的数据从Oracle同步到ES。
最佳答案
正如您所说,SpecificCompanyService 和 SpecificPersonService 对于上述所有类都具有相同的逻辑。
因此,您可以为上述两者(SpecificCompanyService 和 特定个人服务)
之后你的类层次结构将如下所示:
class CompanyService extends SpecificService
class PersonService extends SpecificService
class SpecificService implements BaseService
关于java - 如何动态扩展diff父类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60733674/