适配器 class 与数据 class 中的 toXXX() 方法
Adapter class vs toXXX() method in data class
我有一个场景,我想将对象转换为服务请求对象类型以调用服务。
我有一个这样的数据对象:
class Data {
int val;
...
}
我想将此对象转换为服务请求对象,比如说 DataRequest。我正在考虑这两个选项:
1. Data class 本身有一个 toDataRequest()
方法。
class Data {
int val;
...
public DataRequest toDataRequest() {
..
}
}
2。有一个单独的 class DataAdapter
,并且里面有 adapt 方法,returns DataRequest
对象。
class DataAdapter {
public DataRequest adapt(Data data) {
...
}
}
我倾向于第一个,因为它有助于减少 classes 的数量。我很想听听,对此用例的一般建议是什么?
通常选择第一个选项会更好。我们以字符串 class 为例。如果 class 的作者认为有用,许多 classes 可以变成字符串 。 class 的作者只需在 class 的末尾添加一个 toString 方法。他们将不必要求 Oracle 根据这些开发人员编写的 class 为字符串添加工厂方法。这不仅会让 Oracle 维护起来非常烦人,而且还会很糟糕,因为 String 对象的开销会随着所有工厂方法的增加而飙升。
这取决于你的架构。通常你有一个服务层和至少一个持久层。服务层位于持久层之上,通常架构只允许从较高层到较低层的访问。例如
+----------------------------+
| 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
中实现映射逻辑。
我有一个场景,我想将对象转换为服务请求对象类型以调用服务。
我有一个这样的数据对象:
class Data {
int val;
...
}
我想将此对象转换为服务请求对象,比如说 DataRequest。我正在考虑这两个选项:
1. Data class 本身有一个 toDataRequest()
方法。
class Data {
int val;
...
public DataRequest toDataRequest() {
..
}
}
2。有一个单独的 class DataAdapter
,并且里面有 adapt 方法,returns DataRequest
对象。
class DataAdapter {
public DataRequest adapt(Data data) {
...
}
}
我倾向于第一个,因为它有助于减少 classes 的数量。我很想听听,对此用例的一般建议是什么?
通常选择第一个选项会更好。我们以字符串 class 为例。如果 class 的作者认为有用,许多 classes 可以变成字符串 。 class 的作者只需在 class 的末尾添加一个 toString 方法。他们将不必要求 Oracle 根据这些开发人员编写的 class 为字符串添加工厂方法。这不仅会让 Oracle 维护起来非常烦人,而且还会很糟糕,因为 String 对象的开销会随着所有工厂方法的增加而飙升。
这取决于你的架构。通常你有一个服务层和至少一个持久层。服务层位于持久层之上,通常架构只允许从较高层到较低层的访问。例如
+----------------------------+
| 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
中实现映射逻辑。