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