Java程序两个工厂类,以产生不同的接口实例具有相同condtion
enum FILE_TYPE {
XML, JSON;
}
interface Parser {
void parse();
}
class XMLparser implements Parser {
public void parse() { }
}
class JSONparser implements Parser {
public void parse() { }
}
interface Mapper {
void map();
}
class XMLmapper implements Mapper {
public void map() { }
}
class JSONmapper implements Mapper {
public void map() { }
}
class ParserFactory {
public static Parser getInstance(FILE_TYPE fileType) {
switch(fileType) {
case XML:
return new XMLparser();
case JSON:
return new JSONparser();
}
return null;
}
}
class MapperFactory {
public static Mapper getInstance(FILE_TYPE fileType) {
switch(fileType) {
case XML:
return new XMLmapper();
case JSON:
return new JSONmapper();
}
return null;
}
}
在上面的Java程序都factory方法产生不同的接口实例这里依赖于相同的条件下,I,E都使用相同的枚举FILE_TYPE。
对这种情况使用两种工厂方法是否正确?约束是我无法将两个界面合并为一个。
我很新来java设计,请帮助我
您的命名完全违反Java约定。类总是**是'PascalCase'; 'camelCase'被保留给变量。 'UPPER_SNAKE_CASE'是为编译时间常量保留的。请相应地更新您的代码。 –
至于实际问题;我建议你用'getParser'和'getMapper'方法创建一个'接口ParserMapper'或类似的接口。让你的工厂返回一个“ParserMapper” - 这是除非有任何理由使用带'JsonParser'的'XmlMapper'。 –
@BoristheSpider你是对的,但想法是解析器本身将被其他模块重用,所以我分离了两个。 – sujin