【发布时间】:2021-01-18 19:09:08
【问题描述】:
所以,我开始了一个小小的宠物项目,只是为了有一些工作要做,但自从上次我从事商业工作以来,我学到了一些关于模式等的东西。因此,当我偶然发现必须将简单的 DTO 转换为在程序中保持其值的简单模型时,我开始想知道 - 转换它的最佳实践是什么?
为了 calrify - 我有这样的东西:
public class LoggedInDTO
{
public String Token;
public String Name;
}
我希望将其转换为LoggedInUser,如下所示:
public class LoggedInUser
{
private String _token;
private String _name;
}
(当然登录用户会比这个大一点,重点是除了转接以外不要用DTO,还要有更专业的类) 现在,如何正确地将一种转换为另一种以实现最佳清晰度和/或可测试性? 我想只是将 DTO 传递给构造函数,然后只是复制值,但我担心它会“紧密耦合”,这是所有网站都在讲述的编程恐怖故事。从另一面看,一个是另一个的基础,为什么不呢?或者也许转换器可以将所有东西都放在一个地方?
最好的做法是什么?还是我想太多了,不应该关心这些?
【问题讨论】:
-
如果一个是另一个的基类,为什么你有两次这些属性?
-
也许base是错误的词,例子太简单了。如果我有一些 DTO 以原始形式从服务器获取信息(因为 API 以这种方式或 smth 工作)并且在应用程序中我会使用不同的类,它将这些值保存在特定类型中,并对值进行大量调整(即我需要),这将是更具代表性的例子。
-
好的,然后看看这样的帖子:Conversion of DTO to entity and vice-versa。然而,他们并不是在谈论最佳实践。我认为你不应该太在意这样的事情。只要 DTO 保持原样,构造函数的想法就很好。当问题是关于将某些东西转换为自身的另一种形式时,它不是“紧密耦合”的。
-
有像 Dozer 这样的复杂工具,可以将复杂的 Java 数据结构从一个类映射到另一个类。这是一个相当普遍的问题,我怀疑,没有一个完美的解决方案。就个人而言,我不会太担心在显式代码中进行映射,除非类非常复杂,或者它们很多。
标签: java type-conversion dto