0

我有一项服务,其流程基本上如下:

  1. 接收输入对象。这只是一个 POJO 对象,我对它的设计没有太多发言权。
  2. 转换为我的服务的规范化对象。
  3. 对规范化对象执行一些业务逻辑,并收集一些关于它的额外数据。
  4. 转换为数据传递到的另一个服务的输出对象。(另一个 POJO。)
  5. 将转换后的数据传递给另一个服务。

但是,这意味着我的服务的很大一部分是从 type 转换InputFoo为 typeNormalizedFoo到 type OutputFoo

这将是一项非常容易的任务。我正在使用 Google Collections 库,并且可以有这样的类:

public class InputFooToNormalizedFooConverter implements Function<InputFoo, NormalizedFoo> {
  public NormalizedFoo apply(InputFoo input) {
    NormalizedFoo output = new NormalizedFoo();
    output.setProperty(input.getProperty());
  }
}

和这样的另一个类:

public class NormalizedFooFooToOutputFooConverter implements Function<NormalizedFoo, OutputFoo> {
  public NormalizedFoo apply(InputFoo input) {
    NormalizedFoo output = new NormalizedFoo();
    output.setProperty(input.getProperty());
  }
}

但是每种类型的 Foo 本质上都有这样的层次结构:

public class Foo {
   List<Bar> barItems;
   // .. other properties
}

public class Bar {
   List<Baz> bazItems;
   List<Quux> quuxItems;
   // .. other properties
}

public class Baz {
   // .. other properties
}

public class Quux {
   // .. other properties
}

这意味着我有NormalizedFooToOutputFooConverter一个NormalizedBarToOutputBarConverter implements Function<NormalizedBar, OutputBar>类型等等。

更糟糕的是,输入与归一化模型并不完全匹配。这更像

public class InputFoo {
  public List<InputBar> bars;
  public List<InputBaz> bazs;
  public List<InputQuux> quuxs;
  // .. other properties
}

public class InputBar {
  private String barId;
  // .. other properties
}

public class InputBaz {
  private String barId;
  private String bazId;
  // .. other properties
}

public class InputQuux {
  private String barId;
  private String quuxId;
  // .. other properties
}

在这些模型中,我可以根据每个模型的特征Baz来确定哪些模型Quux属于哪个模型。BarbarId

在这一点上,我有大约 20 个不同的转换器用于 from InputtoNormalizedNormalizedto Output。更糟糕的是,其中一些具有ReallyLongInputTypeToReallyLongNormalizedTypeConverter创建极长类名的名称。我觉得我在这里做错了,所有的转换器。有没有更好的方法来组织我的转换器?

4

0 回答 0