如何處理複雜查詢條件:Data Mapper vs. Service Layer
如何處理複雜查詢條件:Data Mapper vs. Service Layer在物件導向程式中處理複雜查詢條件時,主要有兩種方法:在資料映射器或服務層中處理它們。
資料映射器方法資料映射器模式用於將網域物件對應到和來自資料庫。在處理條件的上下文中,資料映射器可以具有接受條件清單的通用 get() 方法。例如,如果我們想按作者檢索書籍,我們可以呼叫BookDataMapper->get(['author' => 'John Doe']).
但是,如果我們想使用多個條件,則需要複雜的查詢,例如按作者和出版商尋找書籍,我們可以擴充BookDataMapper->get() 方法來解析條件。或者,我們可以建立一個新方法,例如 BookDataMapper->getByAuthorAndPublisher()。
服務層方法服務層負責處理應用程式的業務邏輯。它可以充當控制器和資料映射器之間的中介。在處理複雜查詢條件的情況下,服務層可以直接呼叫更具體的資料映射器方法,例如BookService->getByAuthorAndPublisher()。這種方法會將服務層簡化為一個中間人。
方法比較資料映射器方法將條件保留在資料映射器內,這可以導致條件邏輯從域物件洩漏。另一方面,服務層方法將領域邏輯保留在服務層內,使其更加模組化。
最終,這些方法之間的選擇取決於應用程式的特定要求。如果領域邏輯相對簡單且複雜查詢不常見,則資料映射器方法可能就足夠了。但是,如果領域邏輯複雜或複雜查詢頻繁,那麼服務層的方式可能更合適。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3