デザインに関する質問があります。私はこれまでコードを書いていません。この時点でどのように実装するかを考えているだけです。タイプAのオブジェクトがあり、タイプBのオブジェクトが含まれています。オブジェクトのカテゴリ(インターフェイスまたは抽象クラス?)をBで定義したいと思います。次に、Bのサブタイプを定義するxmlファイルがあります。たとえば、BがDriveableという名前のインターフェイスである場合、「car」または「truck」は、タイプAに必要なDrivableオブジェクトとしてxmlで定義されている可能性があります。
私が考えていたのは、Bをインターフェイスにしてから、ファクトリメソッドを持つ静的ファクトリクラスを作成して、どのサブタイプBにxmlファイルを指定するかを決定することです。だから私の最初の質問は、これが問題に取り組むための最良の方法でしょうか?インターフェイスの代わりに抽象クラスを使用する方が良いでしょうか、それとも主に個人的な好みですか?
次に、インターフェイスを使用する場合は、ファクトリメソッド内で次のようにします。
B createB(File f){
...
String type = ...
if(type.equals("car"))
return new CarType();
else if(type.equals("truck"))
return new TruckType();
...
return null;
}
したがって、新しいBサブタイプを追加するたびに、このメソッドに別のifステートメントを追加する必要があります。これを行うためのより良い方法はありますか?私がしなければならないのは、新しいBサブタイプを作成してから、XMLを更新し、ファクトリメソッドを更新しないことだけですか?基本的に、Bのタイプをファクトリメソッドにハードコーディングしたくありません。私が上に持っているものがファクトリメソッドを使ったかなり標準的なプロトコルであるなら、私はそれをそのように扱うことができますが、まったく正しくないようです。