首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态扩展diff父类?

问如何动态扩展diff父类?
EN

Stack Overflow用户
提问于 2020-03-18 12:47:12
回答 2查看 61关注 0票数 0

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

代码语言:javascript
复制
BaseService (Abstract):
    - CompanyService
    - PersonService

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

代码语言:javascript
复制
BaseService(Abstract)
    - CompanyService
        - SpecificCompanyService 
    - PersonService
        - SpecificPersonService

但是SpecificCompanyService和SpecificPersonService逻辑是一样的,不需要重复。所以我想再次提取一个超类

代码语言:javascript
复制
CompanyService / PersonService:
    - BaseSpecificService (Abstract):
        - SpecificCompanyService / SpecificPersonService

但是如何动态扩展diff父类呢?例如,BaseSpecificService可以动态扩展CompanyService或PersonService。

代码语言:javascript
复制
SpecificCompanyService extends BaseSpecificService extends CompanyService
SpecificPersonService extends BaseSpecificService extends PersonService

现在我的解决方案是添加一个SpecificUtils,并将公共逻辑放到SpecificUtils中。在这种情况下,utils中的方法需要更多的参数,但如果在抽象父类中普通登录,就会简单得多。

PS。

背景:最初只有一种调度任务的情况,例如每10分钟同步一次从Oracle到ElasticSearch的变化的公司,人员,但现在我想支持这种情况,即只同步从Oracle到ES的特定时间范围的数据。

EN

回答 2

Stack Overflow用户

发布于 2020-03-18 12:57:30

如果"SpecificCompanyService和SpecificPersonService逻辑是一样的“,->为什么不像SpecificService那样创建接口呢?

我的建议是

代码语言:javascript
复制
class SpecificCompanyService extends BaseService, implements SpecificService
class PersonService extends BaseService, implements SpecificService
票数 0
EN

Stack Overflow用户

发布于 2020-03-18 14:38:45

正如您所说的,对于上述所有类,SpecificCompanyService和SpecificPersonService都具有相同的逻辑。

因此,您可以为above(SpecificCompanyService和SpecificPersonService)创建一个SpecificService抽象类

在此之后,您的类层次结构将如下所示:

代码语言:javascript
复制
class CompanyService extends SpecificService
class PersonService extends SpecificService
class SpecificService implements BaseService
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60733674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档