优雅地创建pojo的设计模式

时间:2019-02-07 09:49:49

标签: java design-patterns dto

在我们尝试迁移到新系统时,我必须根据某个设置从三个不同的源中提取数据,并且我们仍然希望保持原有流程,直到我们切换为止。

让我们说我们需要得到一个包含次级重型POJO的合并POJO。

class X { 
   Y1 obj1;
   Y2 obj2;
   Y2 obj3;
...
}

我已经建立了一个可以调用任何下游服务并引入数据的层。我想拥有的是Y1和Y2和Y3每个都有自己的填充器,并且可以从该层正在调用的不同服务的不同类型的POJO中构建它们。有没有一种优雅的方法可以做到这一点,所以以后,我只需要添加代码即可。另外,我想尽可能地遵守SOLID原则。

我想到的一种方法是为每种类型的Y都有一个策略模式,然后我们根据服务及其传递的pojo选择要转换的策略。

但这会导致X内每个新复数Y的类繁荣,我将不得不编写多种策略,对于一件简单的事情,基本上这是很多类。

1 个答案:

答案 0 :(得分:0)

使用Dependency Injection。因此,对于您的类,给构造函数分配了obj1obj2obj3以便使用,而不是让它们自己创建这些对象:

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;
   }
...
}

如果Y1Y2interfaces or abstract base classes,则效果更好。