Javaのプログラム上のJavaプログラムで二つのファクトリクラスは
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;
}
}
は、両方のファクトリメソッドが異なるインターフェースのインスタンスを生成し、同じcondtionで異なるインタフェースのインスタンスを生成し、ここで同じ条件に依存し、I、Eは両方とも同じ列挙型FILE_TYPEを使用します。
この場合、2つのファクトリメソッドを使用するのは正しいですか? 私は両方のインターフェイスを1つに結合できないという制約があります。
私はJavaの設計に非常に新しいです、親切に私は
あなたの命名はJavaの規約に完全に反しています。クラスは**常に** PascalCaseです。 'camelCase'は変数のために予約されています。 'UPPER_SNAKE_CASE'はコンパイル時定数のために予約されています。それに応じてコードを更新してください。 –
実際の質問に関しては、 'getParser'メソッドと' getMapper'メソッドで 'interface ParserMapper'などを作成することをお勧めします。あなたの工場で 'ParserMapper'を返すようにしましょう。これは' XmlMapper'を 'JsonParser'で使う理由がない限りです。 –
@BoristheSpiderあなたは正しいですが、パーサーだけが別のモジュールで再利用されるので、私は両方を分けています。 – sujin