0

实现隐藏要求我们向用户隐藏类的内部结构。为了简单起见,让我们声明一下:将 getter/setter 的数量减少到最少。

关注点的分离要求一个类的改变应该只有一个原因。因此,不能让服务层的一个类做服务层的事情例如将数据保存到数据存储中。

数据传输对象 (DTO) 用于将数据从服务层传输到数据访问层。

为了构建 DTO,在最坏的情况下,我需要读取服务层类的所有成员。这将需要最大数量的 getter,这违反了实现隐藏。

Storable使用虚拟方法从公共抽象基类派生应该转换为 DTO 的类Dto buildDto()将违反关注点分离。

你能推荐一些应对这种情况的策略吗?或者在这方面实际上有一个普遍的做法?

4

1 回答 1

0

您的定义中有几处不太正确:

  • DTO 是“财产袋”。没有行为的类,通常用于在不同服务之间交换数据。您可以使用它们来定义 WebAPI 中 REST 端点的有效负载或响应的形状。
  • 实现隐藏并不一定意味着减少 getter/setter。它是关于抽象类、数据和行为的内部结构。
  • 服务层和数据层之间的通信可以使用域模型而不是简单的 POCO 类来完成(实际上是值得建议的)。

最后一点可能是您正在寻找的。尝试正确定义您的领域模型:它们不应该是简单的“属性包”,否则您最终将拥有通常定义的“贫血模型”。

此外,如果您向我们提供有关您的一般架构的更多详细信息,我们也许可以为您提供更好的建议 :)

于 2021-01-18T14:31:21.157 回答