我正在開發一個 Symfony 應用程式,但我想我的問題主要與框架使用無關。
情況是這樣的:
我得到了一個非常輕量級的物體,它實際上甚至不由 ORM 管理,因為它只是用于聚合和傳達另一個物體的資訊。
我讀到我們應該將業務邏輯排除在模型之外,但我也認為如果fromXYZ我的輕量級物體中有一個-method 來創建一個基于“大物體”的實體化的 SPOC ,這對我來說非常有用. 但從技術上講,這種 from 方法執行的邏輯與我認為的良好實踐相矛盾。
那么這會是一個反模式嗎?如果是,我將如何以更合適的方式解決此問題?
uj5u.com熱心網友回復:
你在說什么是靜態工廠方法。使用它很不錯,但它不應該做任何花哨的事情,因為很難測驗您的代碼,因為您無法模擬它。
如果你覺得你的方法不會在測驗中產生任何問題,你可以毫無疑問地創建它。否則,您可以將創建邏輯封裝在單獨的工廠中。
uj5u.com熱心網友回復:
您的“輕量級物體”可以稱為 DTO。
保持術語直白的一種方法。
- 物體由 ORM 管理。
- DTO 不受管理。通常用于傳達物體的子集或集合。
通過復制其欄位從另一個物件構造一個物件不是我考慮的業務邏輯,除非業務需求規定了復雜的轉換。
fromXYZ方法的真正問題在于它們實作了對XYZ. 你必須小心這些依賴指向哪個方向。例如,如果您通過向 DTO 傳遞物體來構造 DTO,則該 DTO 現在依賴于應用程式的持久層。如果您隨后在服務中使用該 DTO,您的服務層現在對您的持久層具有(可傳遞的)依賴關系。這稱為緊耦合。
保持業務邏輯與持久性、視圖等分離的一種方法是將依賴關系指向另一個方向:進入服務而不是離開服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363997.html
