1

システム内のエンティティの 2 つの表現があります。

表現 A は、最新の推奨される実装としてシステム全体で使用されます。

表現 B は、レガシー システムの特異な動作に対応するために使用されます。

エンティティを永続化するときに、A から B への変換を行いたいと考えています。

これにはどのような実装パターンを使用できますか?

翻訳機能をカプセル化する「アダプター」を実装するのは正しいでしょうか? または、より良い用語/方法はありますか?

4

2 に答える 2

0

おそらく、アダプタとファクトリを組み合わせるか、通常の継承のみを使用することをお勧めします。

優先実装からインターフェイス A を抽出し、ラッパー クラスを実装します。

public interface A {
  <methods>
}

public class PreferredImplementation implements A {
  <methods>
}

public class AdaptorForOldClass implements A {
  private final OldClass wrapped;

  public AdaptorForOldClass(final OldClass toWrap) {
    this.wrapped = toWrap;
  }

  <methods>
}
于 2012-08-30T08:56:53.467 に答える
0

あなたの要件は、クラスAを永続化する間だけクラスAをBにマップすることだと思います。この目的のために、データ転送オブジェクトを使用するだけで、永続層がこの DTO からクラス B へのマッピングを行うことができると思います。必要な要件がはるかに多くない限り、アダプターの設計パターンの使用は実際にはわかりません。述べました。

于 2012-08-30T11:15:30.970 に答える