我有以下类继承(A
是我的父类):
在某些情况下,X
和Y
需要一些额外的字段和方法。所以我基本上需要的是:
由于重复代码,我不想扩展X
和Y
使其子类完全相同的字段和方法。
如何处理呢?唯一的解决方案是代表吗?
更新:实际示例:
我正在从不同的文件类型导入数据:
打包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,
CsvImportFile
和FixedLengthImportFile
应该获得ExtensionLineStartImportFile
的属性。副节点:由于我有多个扩展,它们执行不同的功能,并且这些扩展应该易于添加到应用程序中或从应用程序中删除,因此,我不想将它们全部合并到“核心”中。
最佳答案
Factory pattern-这是一个体系结构问题,此模式应该是您的问题的答案