我想了解如何使用spring实现以下工厂方法模式。
以下是不使用spring
的代码interface FileParser {
void parse()
}
class XMLFileParser implements FileParser {
void parse() {
}
}
class PipeFileParser implements FileParser {
void parse() {
}
}
class FileParserFactory {
FileParser getParserInstance(String fileType) {
if("XML".equals(fileType)
return new XMLFileParer();
else
return new PipeFileParser();
}
}
class ActivityHandler() {
void handle(String fileType) {
FileParser fileParer = FileParserFactory.getParerInstance(fileType);
fileParser.parse();
}
}
提前致谢。
答案 0 :(得分:1)
我会创建一个bean FileParserFactory,它可以代表返回新的Parsers。 此外,这个工厂bean将具有map(fileType => Parser)和默认解析器
public class FileParserFactory {
private Map<String, FileParser> fileParsers;
private FileParser defaultParser;
FileParser getParserInstance(String fileType) {
if(fileParsers.containsKey(fileType))
return fileParsers.get(fileType);
else
return defaultParser;
}
public void setParsers(Map<String, FileParser> parsers) {
filePaarsers = parsers;
}
public void setDefaultParser(FileParser parser) {
defaultParser = parser;
}
}
并在代码中:
@Inject FileParserFactory factory;
...
factory.getParser(fileType);
我假设可以重用解析器并且它们是线程安全的。
这个解决方案更通用,如果有必要可以扩展