编写具有公共字段的 pojo 的最佳方法

Cro*_*ool 3 java pojo

我目前正在制作一项服务,其中有很多公共 API。并且响应和请求对象重叠很多。所以,我在想有没有一种方法可以概括请求/响应对象的 pojo 创建。有时,响应对象与具有一两个额外字段的请求对象相同。

让我给你举个例子。

@Data
public class Request {
    private A objA;
    private B objB;
}

@Data
public class Response {
    private A objA;
    private B objB;
    private C objC;
}

@Data
public class A {
    private D objD;
}

@Data
public class B {
    private String sB; 
    private E obje;
}

@Data
public class C {
    private String sC;
}
Run Code Online (Sandbox Code Playgroud)

类似地,D 和 E 也是 pojo。问题是请求/响应对象中有很多相似之处(重叠字段)。

jav*_*301 7

您的解决方案可能是继承:创建一个具有重叠字段的父抽象对象类型,并让请求和响应对象扩展它并指定他们需要的任何额外(唯一)字段。

继承

public abstract class Common {
  private String overlapfield1;
  private String overlapfield2
}

public class Request extends Common {
  private String requestField1;
  private String requestField2;
}

public class Response extends Common {
  private String responseField1;
  private String responseField2;
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用组合来解决这个问题:创建一个具有重叠字段的对象类型,并将此对象作为请求/响应类型的子对象包含在内:

作品

public class Common {
  private String overlapfield1;
  private String overlapfield2
}

public class Request {
  private String requestField1;
  private String requestField2;
  private Common common;
}

public class Response {
  private String responseField1;
  private String responseField2;
  private Common common;
}
Run Code Online (Sandbox Code Playgroud)

每种方法都有利有弊,在这个董事会和其他董事会上得到了广泛的讨论。然而,这些是处理此类问题的两种标准方法。