0

WSDLから生成された親クラスProcessDefinitionがあります。ダース以上のコンポーネントクラスがあります。私の要件は次のとおりです。

  • データベースから既存の定義を抽出します
  • データベースに新しい定義を挿入します
  • データベース内の既存の定義を更新します(definitinのコンポーネントの挿入、更新、削除が必要になる場合があります)
  • データベースから定義を削除します

データベースで各コンポーネントの存在を確認し、存在する場合は定義に追加するため、抽出は簡単です。このために、私はメソッドを持つインターフェースを使用するつもりです

public interface ComponentDAO 
{
 public void addComponentToDefinition(ProcessDefinition definition, String   environmentName);
}

各コンポーネントの実装を提供します。コンポーネント情報が存在する場合はデータベースから抽出し、必要なクラスを作成して定義に設定します。

春に、そのインターフェイスのリストを構成し、各実装をプラグインします。次に、マスターDAOクラスで、次のことを実行できます。

ProcessDefinition definition = new ProcessDefinition()
definition.setProcessID(someID);
for (ComponentDAO c: this.getComponentDAOs)
{
  c.addComponentToDefinition(definition);
}

これは簡単に拡張でき、新しいコンポーネントを追加する場合に既存のクラスに触れる必要はありません。ただし、コンポーネントを更新したり、新しいコンポーネントを作成したりするときは、コンポーネントクラスを知る必要があります。

public void update(ProcessComponentA component, String   environmentName);
public void update(ProcessComponentB component, String   environmentName);

ジェネリックスを使用して、インターフェイスを次のように定義できます

public interface ComponentDAO<T>
{
 public void addComponentToDefinition(ProcessDefinition definition, String   environmentName);
 public void updateComponent(T component);
}

これにより、ComponentDAOの実装がクリーンに保たれますが、インターフェイスを呼び出すマスタークラスでは、ComponentDAOのリストをraw型で定義する必要があります。型キャストは必要ありませんが、コンパイラは完全な型チェックを実行できず、パラメータ化に関する警告が表示されます。生のタイプ。

これに使用すべきデザインパターンはありますか?休止状態またはその他のORMフレームワークを見落としていると仮定します。

4

0 に答える 0