在我们尝试迁移到新系统时,我必须根据某个设置从三个不同的源中提取数据,并且我们仍然希望保持原有流程,直到我们切换为止。
让我们说我们需要得到一个包含次级重型POJO的合并POJO。
class X {
Y1 obj1;
Y2 obj2;
Y2 obj3;
...
}
我已经建立了一个可以调用任何下游服务并引入数据的层。我想拥有的是Y1和Y2和Y3每个都有自己的填充器,并且可以从该层正在调用的不同服务的不同类型的POJO中构建它们。有没有一种优雅的方法可以做到这一点,所以以后,我只需要添加代码即可。另外,我想尽可能地遵守SOLID原则。
我想到的一种方法是为每种类型的Y都有一个策略模式,然后我们根据服务及其传递的pojo选择要转换的策略。
但这会导致X内每个新复数Y的类繁荣,我将不得不编写多种策略,对于一件简单的事情,基本上这是很多类。
答案 0 :(得分:0)
使用Dependency Injection。因此,对于您的类,给构造函数分配了obj1
,obj2
和obj3
以便使用,而不是让它们自己创建这些对象:
class X {
private final Y1 obj1;
private final Y2 obj2;
private final Y2 obj3;
X(Y1 obj1, Y2 obj2, Y2 obj3)
{
this.obj1 = obj1;
this.obj2 = obj2;
this.obj3 = obj3;
}
...
}
如果Y1
和Y2
为interfaces or abstract base classes,则效果更好。