這兩個選項都正確嗎?其中一個比另一個好嗎?在什麼情況下?比其他人更難實現嗎?三層體系結構:數據層應該依賴於域層,反之亦然?
回答
理想情況下,兩者都不應該依賴於其他 - 但實際上,域將取決於數據層,但希望間接。
這是什麼意思?
數據層不應該依賴域層。
域層可能會使用數據對象,但最好是通過依賴注入來完成。一種方法是使用接口,並且只在編譯時引用接口。在運行時通過IoC容器(如Structure Map或Unity)爲這些接口提供具體實現。
這也將幫助您能夠單元測試您的解決方案,以及強化問題分離並創建一個鬆散耦合的系統。
你在界面中使用什麼類型? DAO或域實體? 'void Save(ProductDAO p);'或'void Save(Product p);'?這肯定會迫使一個人依靠另一個。如果前者,領域層需要了解DAO。那麼完全封裝的域呢? – 2010-05-12 13:36:42
這種方法對我來說效果很好。我在域層中定義了DAO接口,並將域對象傳入和傳出接口方法。域實體引用接口。然後在運行時使用工廠來實例化DAO的實現。所以數據訪問層引用了域層,但域對象只引用了DAO接口並且獨立於實際的實現。 – BenV 2010-05-12 15:23:28
通常,域(業務邏輯)層應該依賴於數據層,但不能以其他方式。
理由:
- 你要保持靈活性,以改變業務邏輯,而不必對數據的任何不必要的影響
- 數據層將是更簡單,更不容易出錯,如果你可以把它設計爲獨立業務邏輯決定
- 領域層一般是數據層的調用者,所以沒有必要使依賴另一種方式圓
這實際上非常類似於領域層對錶示層應該具有最小依賴性的方式(儘管在實踐中這可能難以實現)。
- 1. 三層體系結構:必須避免層之間的異常依賴關係?
- 2. 三層體系結構與三層服務器體系結構
- 3. 三層體系結構
- 4. GWT三層體系結構
- 5. 三層體系結構中的SQL依賴關係和SignalR
- 6. ASP.NET三層/三層體系結構 - 如何分離UI和BLL
- 7. 類依賴關係和層次結構
- 8. ASP.Net中4層體系結構的層
- 9. asp.net中的三層體系結構mvc
- 10. 三層體系結構和LINQ to Entities
- 11. 三層體系結構和控制器
- 12. 使用WCF的三層體系結構
- 13. 三層體系結構 - 從較低層通知gui
- 14. 具有多重表示層的三層體系結構
- 15. MySQL體系結構(分層數據)
- 16. WPF數據訪問層體系結構
- 17. 三層Web體系結構:分層機器上的圖層是否有益?
- 18. Web層的體系結構
- 19. WCF N層體系結構
- 20. 從3層體系結構中刪除數據庫依賴關係
- 21. 設置依賴反轉層之間
- 22. 是oracle數據庫體系結構單層,雙層還是多層?
- 23. n層體系結構中的依賴注入 - 如何實現
- 24. struts在實時項目中屬於哪一層三層體系結構
- 25. 3層架構依賴關係
- 26. 什麼數據結構應該用於分層數據?
- 27. 開發對錶示層沒有依賴關係的應用層?
- 28. PHP三層體系結構文件夾結構
- 29. C#NHibernate體系結構,三層應用程序
- 30. 結合MVVM和N層體系結構
「三層」可能是模糊的。請提供您爲這三個圖層使用的定義。 – 2010-05-12 13:25:22