用类似的数据传输对象实现哪种Java模式

时间:2019-04-12 19:59:04

标签: java design-patterns dto

我有一个当前像dto一样使用的类,并且我必须创建一个具有类似属性的类(小于实际属性),是否有与此相关的模式?我以为适配器会有所帮助,但我不知道如何。

class ONE {
  ObjectA oa;
  ObjectB ob;
  ObjectC oc;
  String id;
  String name;
  String someId;
  String country;
}

class TWO {
  ObjectB ob;
  ObjectC oc;
  String name;
  String someId;
  String country;
}

有任何线索吗?

3 个答案:

答案 0 :(得分:0)

我看到了两个使用选项:

  1. Inheritance:使两个超类(更少的属性)和一个子成为一个子类,因为它具有更多的属性(两个和其他属性)。
  2. Interface and abstract class:根据描述的问题,我建议使用上述继承(在1.中)。

使用父类和子类的示例

class ONE extends TWO{

    ObjectA oa;

    String id;

}

class TWO {

    ObjectB ob;

    ObjectC oc;

    String name;

    String someId;

    String country;

}

答案 1 :(得分:0)

优先考虑组成而不是继承。

class ONE {
  ObjectA oa;
  String id;
  TWO ot;
}

class TWO {
  ObjectB ob;
  ObjectC oc;
  String name;
  String someId;
  String country;
}

答案 2 :(得分:0)

在这里您必须说明使用继承/组合是否有意义。使用类ONETWO的名称很难说,所以让我举一个例子。说,我们有这样的Vehicle和Phone类,

class Vehicle {
    String model;
    String color;
    String type;
}

class Phone{
    String model;
    String color;
    String type;
    String brand;
    Integer core;
    Integer ramInGB;
}

VehiclePhone类中有一些共同点。但是您不能像这样更改Phone

class Phone{
    Vehicle v;
    String brand;
    Integer core;
    Integer ramInGB;
}

class Phone extends Vehicle{
    String brand;
    Integer core;
    Integer ramInGB;
}

在任何地方使用任何设计模式之前,必须确定在这种情况下使用它是否合理。不要仅仅为了使用设计模式而使用设计模式。

回到示例,如果ONE和TWO在任何意义上都不相关,则应保留它们。但是,如果是这样,则可以使用继承或合成。这是link,您可能需要先进行选择。