我有以下类继承(A是我的父类):

java - 有条件地从类继承-LMLPHP

在某些情况下XY需要一些额外的字段和方法。所以我基本上需要的是:

java - 有条件地从类继承-LMLPHP

由于重复代码,我不想扩展XY使其子类完全相同的字段和方法。
如何处理呢?唯一的解决方案是代表吗?

更新:实际示例:

我正在从不同的文件类型导入数据:

打包my_application.core:

public class ImportFile { // the "A"
  protected final Path path;
}

public class CsvImportFile extends ImportFile { // the "X"
  private final String delimiter;
}

public class FixedLengthImportFile extends ImportFile { // the "Y"
  // nothing new
}

public class XmlImportFile extends ImportFile {
  private final String root;
}

有时文件的第一行包含标题/标题而不是数据。因此,这里有一个示例扩展,它允许为csv和定长文件设置起始行:

打包my_application.extension.line_start:
public class ExtensionLineStartImportFile { // the "B"
  protected final int lineStart;
  // some methods
}

因此,如果用户选择使用扩展名line_start,CsvImportFileFixedLengthImportFile应该获得ExtensionLineStartImportFile的属性。

副节点:由于我有多个扩展,它们执行不同的功能,并且这些扩展应该易于添加到应用程序中或从应用程序中删除,因此,我不想将它们全部合并到“核心”中。

最佳答案

Factory pattern-这是一个体系结构问题,此模式应该是您的问题的答案

09-12 17:27