java - 如何动态扩展diff父类?

标签 java

现在有一个 super BaseService,它有两个子类:CompanyService、PersonService

BaseService (Abstract):
    - CompanyService
    - PersonService

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

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

但是SpecificCompanyServiceSpecificPersonService逻辑是相同的,不需要重复。所以想再次提取一个父类(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。

最佳答案

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

因此,您可以为上述两者(SpecificCompanyService特定个人服务)

之后你的类层次结构将如下所示:

class CompanyService extends SpecificService
class PersonService extends SpecificService
class SpecificService implements BaseService

关于java - 如何动态扩展diff父类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60733674/

相关文章:

java - 非最终静态字段的静态初始化安全吗?

java - UNIX:java 程序命令从终端运行但不能从 bash 脚本运行

java - 当 B 实现 A 时,将 ConcurrentHashMap<String, B> 转换为 ConcurrentHashMap<String, A>

java - 使用Java绘图: Applying Borders/Outlines to Shapes

java - JDK 1.7 64 位 Inflater 抛出无效的代码长度设置

java - 作为Java中的方法参数,问号允许你在Class<?>中做什么

java - 从 jni 访问加速度计

java - sql 连接 , java , mysql

java - 示例 Java 程序中的 Spark UDF 反序列化错误

java - 仅显示异常类型及其原因,而不是发生异常时的整个堆栈跟踪,而是显示在日志文件中