我有一个服务,其流程基本上如下:
这意味着,我的服务的很大一部分是从InputFoo
类型转换为NormalizedFoo
类型到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
和Bar
属于哪个barId
。
此时,我有大约20个不同的转换器,用于从Input
到Normalized
和Normalized
到Output
。更糟糕的是,他们中的一些人的名字像ReallyLongInputTypeToReallyLongNormalizedTypeConverter
,创造了极长的类名。对于所有转换器,我觉得我在这里做错了。有没有更好的方法来组织我的转换器?