这两个选项都正确吗?其中一个比另一个好吗?在什么情况下?比其他人更难实现吗?三层体系结构:数据层应该依赖于域层,反之亦然?
回答
理想情况下,两者都不应该依赖于其他 - 但实际上,域将取决于数据层,但希望间接。
这是什么意思?
数据层不应该依赖域层。
域层可能会使用数据对象,但最好是通过依赖注入来完成。一种方法是使用接口,并且只在编译时引用接口。在运行时通过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