gpt4 book ai didi

从子类返回特定字段的 Java 结构/模式

转载 作者:行者123 更新时间:2023-12-01 16:35:16 25 4
gpt4 key购买 nike

对于一个项目,我们需要创建一个接口(interface)定义,它将返回我们的组件可以导出的所有可用文件类型扩展...

问题是我们想要避免配置/属性文件。当添加另一个文件类型时(将来),我们不想编辑我们的配置/属性文件。我们这部分组件的结构如下:

public abstract class FileType {
protected String filetype;

public FileType(String filetype){
this.filetype = filetype;
}

public abstract void export(String path, Object information);
}


public class PdfExport extends FileType {
public PdfExport() {
super("pdf");
}

public void export(String path, Object information){
//pdf specific logic
}
}

但是当另一个组件调用接口(interface)定义 getExportTypes() 时,我们如何解决这个问题? (我们如何获得所有可用文件类型的列表?)考虑到将来添加扩展抽象类文件类型的新类(添加新文件类型)的要求?

有人有建议吗,也许是上面例子的另一种结构?或者任何讨论上述问题的(设计)?

提前致谢!

最佳答案

你可以这样做:

public interface FileType {
public String getFileType();
public void export(String path, Object info);
}

public enum DefaultFileType implements FileType {
PDF(".pdf"){
public void export(String path, Object info) {
// do pdf stuff
}
}, TXT(".txt"){
public void export(String path, Object info) {
//do txt stuff
}
};

private final String fileType;

private DefaultFileType(String fileType) {
this.fileType = fileType;
}

public String getFileType() {
return fileType;
}

public abstract void export(String path, Object info);
}

然后你就可以拥有 Set<FileType>在您的类(class)中所有受支持的FileType s。这样,任何想要添加受支持的 FileType 的人都可以这样做。但无法编辑您的 enum仍然可以这样做。

关于从子类返回特定字段的 Java 结构/模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9862642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com