【发布时间】:2016-02-04 18:11:48
【问题描述】:
我正在使用 MVC 方法。
因此,当我从 PUT/POST 动词的主体(有效负载)收到 EntityFilterRequest 时,我需要将 EntityFilterRequest 转换为 EntityFilterRequestModel 使用
EntityFilterRequestModel.of(EntityFilterRequest).
of 方法执行:
所以基本上我没有使用传统的 MVC 方法,而是在 C 和 M 之间有一个层来执行 *requests 和 *requestModels 类之间的转换。
- 所有必要的转换(字符串到整数,短)
- 请求中空字段的默认值
- 执行一些检查是否存在实体 ID。
- 构建模型层所需的新字段。
这已经是一种设计模式了吗? 有更好的方法吗?
主要思想是使用EntityFilterRequestModel 类从模型中删除上述所有验证,并减少M 层上不必要的代码。
如果您需要更多详细信息,请添加 cmets,我会尽量说得更清楚。
【问题讨论】:
-
MVC 不会将控制器中的层数限制为一层,因此您还没有做任何非 MVC 的事情。让数据适合模型层一直是控制器的责任。
-
好的,我同意你的观点,但是有没有更好的方法来实现我想要做的事情?有这方面的现有设计模式吗?
-
有很多库可以为您进行映射,例如 Dozer。没有将一个对象转换为另一个对象的设计模式。
-
我不认为推土机正是我需要的,因为我做的不仅仅是
EntityFilterRequest和EntityFilterRequestModel之间的映射。我执行问题上列出的 4 点。关于这个“新”层,我可以称它为变换/映射层吗?
标签: java rest spring-mvc design-patterns model-view-controller