1

我在系统中有两个实体的表示。

表示 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 类到 B 类时才将其映射。为此,我认为您可以只使用数据传输对象,然后您的持久层可以执行从该 DTO 到 B 类的映射。我真的看不到适配器设计模式的使用,除非您有比您有更多的要求表示。

于 2012-08-30T11:15:30.970 回答