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