我有一种情况,我想将对象转换为服务请求对象类型以调用服务。

我有一个像这样的数据对象:

class Data {
  int val;
  ...
}


我想将此对象转换为服务请求对象,比如说DataRequest。我在考虑以下两个选项:
1.在Data类本身中具有一个toDataRequest()方法。

class Data {
  int val;
  ...

  public DataRequest toDataRequest() {
    ..
  }
}


2.拥有一个单独的类DataAdapter,并具有Adapt方法,该方法返回DataRequest对象。

class DataAdapter {
  public DataRequest adapt(Data data) {
    ...
  }
}


我倾向于1级,因为它有助于减少课程数量。我很想听听,这个用例的一般建议是什么?

最佳答案

这取决于您的体系结构。通常,您有一个服务层和至少一个持久层。服务层在持久层之上,通常,体系结构仅允许从较高层到较低层的访问。例如。

 +----------------------------+
 |       service layer        |  // request object is placed here
 +----------------------------+
              | depends on
              V
 +----------------------------+
 |    persistence layer       |  // Data object is placed here
 +----------------------------+


因此,当您的Data对象具有方法public DataRequest toDataRequest()时,它便具有对DataRequest的依赖关系,这意味着较低的层与较高的层具有依赖关系。这通常不是您想要的。

因此,如果使用DataAdapter(也称为DataMapper)并将其放置在服务层中,则您将尊重上面显示的体系结构。

您也可以在DataRequest中实现映射逻辑。

10-08 13:09