服務層與資料映射器:誰應該處理複雜的查詢條件?

DDD
發布: 2024-11-08 00:31:03
原創
361 人瀏覽過

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

確定複雜查詢中處理條件的責任:服務層與資料映射器

在追求資料擷取與操作時,問題出現這樣的問題:誰應該承擔處理複雜查詢條件的負擔- 資料映射器還是服務層?

資料映射器

資料映射器模式規定了一個簡單的接口,主要職責是資料擷取、保存和刪除。然而,其實現細節仍有待解釋。

儘管其介面極簡,但資料映射器可以擴展以合併一些條件邏輯,例如根據特定識別碼或作者姓名檢索物件。

服務層

另一方面,服務層充當控制器和資料映射器之間的中介。它可以透過直接呼叫更具體的方法來減輕處理多個條件的複雜性,例如BookDataMapper->getByAuthorAndPublisher()。

服務層條件處理的優點

有些人主張讓服務層解析查詢條件有幾個原因:

  • 降低資料映射器的複雜性。
  • 將條件邏輯保留在模型層中,防止其洩漏到控制器.

資料映射器條件處理的優點

其他人則喜歡將條件邏輯集中在資料映射器中:

  • 簡化服務層,使其成為純粹的中介。
  • 允許資料映射器根據需要合併其他基於條件的方法。

最佳方法

最佳方法取決於特定應用和特定領域的邏輯。但是,可以考慮一些一般準則:

  • 使資料映射器介面盡可能簡單,並提供諸如獲取、保存和刪除等基本操作。
  • 使用域物件本身保存資料檢索的條件參數。
  • 利用「告訴不要問」原則來最大限度地減少域物件和映射器之間的通訊。
  • 考慮使用諸如 ArticleCollectionMapper 之類的附加結構來處理物件群組具有不同的條件。

以上是服務層與資料映射器:誰應該處理複雜的查詢條件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!