0

这似乎是一个非常简单的设计问题,但我很好奇你的意见。

我有一个 DAO 层,一种方法返回某些东西的最大值和最小值。int[]所以它返回两个整数值,但使用两个元素作为返回类型,对于方法调用int[0]=min_valint[1]=max_val来说不是很清楚,因为他必须准确地知道哪个元素是第一个,哪个是第二个。

我应该在这里使用某种像这样的 DTO ...

class RangeValuesDTO {
  private int min_val;

  private int max_val;
}

?

在这种简单的情况下,正确的模式是什么?

4

2 回答 2

2

您应该问自己为什么需要某种模式。就企业模式而言,没有最佳实践之类的东西。正如@TechExchange 所建议的那样,将数据库中的数据结构包装在一个对象中以保持您的接口紧凑和稳定,这是一个有效的关注点。但正如@Tom Anderson 指出的那样,这应该被称为值对象,而不是 DTO。

请记住,对 DTO 模式的需求有一些历史原因(参见此处),主要是在 EJB-3 之前的世界中。这些可能不再适用。

DTOs can help separating higher layers from accessing the data layer directly. In a simple CRUD application this can however add too much indirection and thus unnecessary duplication and complexity, thus more maintainance. You often end up having DTOs that look very similar to the entities that may not leave the data access layer.

DTOs can be especially helpful in distributed systems where they lead to more coarse grained interfaces and reduce network traffic.

于 2013-01-30T20:40:08.120 回答
1

确切地说,您应该始终将数据包装在有意义且可重用的 DataStructures 中。

使用 DTO 将帮助您实现这一目标。

例如,将来如果您的 DAO 返回另一个intstring您将做什么,如果您使用 DTO,则解决方案很容易将其添加int或添加string到 DTO,并且不会影响应用程序的其他层。

所以+1 DTO

于 2013-01-30T09:45:02.860 回答