这似乎是一个非常简单的设计问题,但我很好奇你的意见。
我有一个 DAO 层,一个方法返回某事物的最大值和最小值。因此它返回两个整数值,但使用带有两个元素 int[0]=min_val
和 int[1]=max_val
的返回类型 int[]
code> 对于方法调用者来说不是很清楚,因为他必须准确地知道哪个元素是第一个,哪个是第二个。
我应该在这里使用某种像这样的 DTO...
class RangeValuesDTO {
private int min_val;
private int max_val;
}
?
在如此简单的情况下,正确的模式是什么?
最佳答案
您应该问自己为什么需要某种模式。就企业模式而言,不存在最佳实践之类的东西。正如 @TechExchange 所建议的,将数据库中的数据结构包装在一个对象中以保持接口(interface)的紧密和稳定,是一个值得关注的问题。但正如 @Tom Anderson 指出的那样,这应该称为值对象,而不是 DTO。
请记住,对 DTO 模式的需求有一些历史原因(请参阅 here ),主要是在 EJB-3 之前的世界中。这些可能不再适用。
DTO 可以帮助将更高层与直接访问数据层分开。然而,在简单的 CRUD 应用程序中,这可能会增加太多的间接性,从而增加不必要的重复和复杂性,从而增加更多的维护工作。您通常最终会得到看起来与可能不会离开数据访问层的实体非常相似的 DTO。
DTO 在分布式系统中特别有用,它们可以带来更粗粒度的接口(interface)并减少网络流量。
关于java - 使用还是不使用DTO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600780/