[英]Adapter class vs toXXX() method in data class
我有一个场景,我想将对象转换为服务请求对象类型以调用服务。
我有一个像这样的数据对象:
class Data {
int val;
...
}
我想将此对象转换为服务请求对象,比如说 DataRequest。 我正在考虑这两个选项:
1. Data 类本身有一个toDataRequest()
方法。
class Data {
int val;
...
public DataRequest toDataRequest() {
..
}
}
2. 有一个单独的类DataAdapter
,其中有adapter 方法,它返回DataRequest
对象。
class DataAdapter {
public DataRequest adapt(Data data) {
...
}
}
我倾向于第一个,因为它有助于减少课程数量。 我很想听听这个用例的一般建议是什么?
这取决于您的架构。 通常你有一个服务层和至少一个持久层。 服务层在持久层之上,通常架构只允许从较高层到较低层的访问。 例如
+----------------------------+
| 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
实现映射逻辑。
通常做第一种选择会更好。 我们以 String 类为例。 如果类的作者认为它有用,许多类都可以变成字符串。 类的编写者只需在类的末尾添加一个 toString 方法即可。 他们不必要求 Oracle 根据这些开发人员编写的类为字符串添加工厂方法。 这不仅会让 Oracle 维护起来非常烦人,而且还会很糟糕,因为 String 对象的开销会随着所有工厂方法的激增而飙升。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.