First of all, all parser implements the same interface:
public class CSVParser implements Parser {}
public class JSONParser implements Parser {}
public class XMLParser implements Parser {}
public class EXCELParser implements Parser {}
Then two solutions for reference:
1.get parser in a method:
public Parser getParser(String file){
if(file.endsWith(".csv"))
return CSVParser();
if(file.endsWith(".json"))
return JSONParser();
if(file.endsWith(".xml"))
return XMLParser();
else
return EXCELParser();
}
2. use enum
:
public class ParserEnum {
CSVParser("csv", new CSVParser()),
JSONParser("json", new JSONParser()),
XMLParser("xml", new XMLParser()),
EXCELParser("excel", new EXCELParser);
private String type;
private Parser parser;
ParserEnum(String type, Parser parser) {
this.type = type;
this.parser = parser;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Parser getParser() {
return parser;
}
public void setParser(Parser parser) {
this.parser = parser;
}
}
then get parser from enum type:
public Parser getParser(String file){
if(file.endsWith(".csv"))
return ParserEnum.CSVParser.getParser;
// ...
}