这似乎是一个非常简单的设计问题,但我很好奇你的意见。
我有一个DAO图层,一个方法返回某个值的最大值和最小值。所以它返回两个整数值,但是使用带有两个元素int[]
和int[0]=min_val
的返回类型int[1]=max_val
对于方法调用者来说不是很清楚,因为他必须确切地知道哪个元素是第一个哪个是第二个。
我应该在这里使用某种像这样的DTO ......
class RangeValuesDTO {
private int min_val;
private int max_val;
}
在如此简单的情况下,正确的模式是什么?
答案 0 :(得分:2)
确切地说,您应该始终将数据包装在有意义且可重复使用的DataStructures中。
使用DTO可以帮助您实现这一目标。
例如,将来如果您的DAO返回另一个int
或string
您将做什么,如果您使用DTO,解决方案很容易添加int
或{{1} }到DTO并且不影响应用程序的其他层。
所以+1 DTO
答案 1 :(得分:1)
你应该问问自己为什么你需要某种模式。在企业模式方面,没有最佳实践。正如@TechExchange建议的那样,从对象中的db包装数据结构以保持接口紧密和稳定是一个有效的问题。但正如@Tom Anderson指出的那样,这应该被称为价值对象,而不是DTO。
请记住,对DTO模式的需求有一些历史原因(参见here),主要是在EJB-3之前的世界。那些可能不再适用。
DTO可以帮助分离更高层直接访问数据层。然而,在简单的CRUD应用程序中,这可能会增加太多的间接性,从而增加了不必要的重复和复杂性,从而提高了维护性。您经常最终得到的DTO看起来与可能不会离开数据访问层的实体非常相似。
DTO在分布式系统中尤其有用,它们会导致更粗粒度的接口并减少网络流量。