现在有一个超级BaseService,它有两个子类:CompanyService,PersonService

BaseService (Abstract):
    - CompanyService
    - PersonService


现在出现了一个新情况,上面的设计无法适应,所以我想添加一个新的子类来实现特定的逻辑,

BaseService(Abstract)
    - CompanyService
        - SpecificCompanyService
    - PersonService
        - SpecificPersonService


但是SpecificCompanyServiceSpecificPersonService逻辑相同,不需要重复。所以想再次提取一个超类

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/

10-09 13:47