首页  >  文章  >  后端开发  >  服务层与数据映射器:谁应该处理复杂的查询条件?

服务层与数据映射器:谁应该处理复杂的查询条件?

DDD
DDD原创
2024-11-08 00:31:03361浏览

 Service Layer vs. Data Mapper: Who Should Handle Complex Query Conditions?

确定复杂查询中处理条件的责任:服务层与数据映射器

在追求数据检索和操作时,问题出现这样的问题:谁应该承担处理复杂查询条件的负担 - 数据映射器还是服务层?

数据映射器

数据映射器模式规定了一个简单的接口,主要职责是数据获取、保存和删除。然而,其实现细节仍然有待解释。

尽管其界面极简,但数据映射器可以扩展以合并一些条件逻辑,例如根据特定标识符或作者姓名检索对象。

服务层

另一方面,服务层充当控制器和数据映射器之间的中介。它可以通过直接调用更具体的方法来减轻处理多个条件的复杂性,例如BookDataMapper->getByAuthorAndPublisher()。

服务层条件处理的优点

一些人主张让服务层解析查询条件有几个原因:

  • 降低数据映射器的复杂性。
  • 将条件逻辑保留在模型层中,防止其泄漏到控制器.

数据映射器条件处理的优点

其他人更喜欢将条件逻辑集中在数据映射器中:

  • 简化服务层,使其成为纯粹的中介。
  • 允许数据映射器根据需要合并其他基于条件的方法。

最佳方法

最佳方法取决于具体应用和特定领域的逻辑。但是,可以考虑一些一般准则:

  • 使数据映射器接口尽可能简单,并提供诸如获取、保存和删除等基本操作。
  • 使用域对象本身保存数据检索的条件参数。
  • 利用“告诉不要问”原则来最大限度地减少域对象和映射器之间的通信。
  • 考虑使用诸如 ArticleCollectionMapper 之类的附加结构来处理对象组具有不同的条件。

以上是服务层与数据映射器:谁应该处理复杂的查询条件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn