「ファクトリー」または「抽象ファクトリー」デザインパターンを使用すると、最初のステップになります。これは、オブジェクトの初期化ロジックをメインコードから取り出し、ファクトリクラスで分離します。このようにして、あなたのメインコードは修正のために閉じられ、拡張のために開かれます(a.k.a. Open Closed Principle)。あなたが行った変更は、工場クラスで分離されます。
この手順をさらに進めたい場合は、反射を使用することもできます。例は次のようになります。このコードで
static Object createObject(String className) {
Object object = null;
try {
Class classDefinition = Class.forName(className);
object = classDefinition.newInstance();
} catch (InstantiationException e) {
System.out.println(e);
} catch (IllegalAccessException e) {
System.out.println(e);
} catch (ClassNotFoundException e) {
System.out.println(e);
}
return object;
}
、あなたは、単にこのようなオブジェクトを作成することができます:あなたはリフレクションを使用する場合もちろん
public static void main(String[] args) {
NewDepartment dep = (NewDepartment) createObject("yourpackage.NewDepartment");
}
を、trade-offがあります。それはそれを使うかどうかのあなたの裁量です。
私は人々がこの質問にどのように答えているのか分かりません。あなたの質問はあまり明確ではない、言い直すことを検討してください。あなたが現在持っているものの "愚かな"下の例を掲示するのに役立つかもしれません。 – Nix
抽象ファクトリパターンの使用に問題がありますか? –
まあ、問題はありませんが、私は実際の実装に行く前にすべての可能なオプションを検討したいだけです。 –