我有一个使用某些业务对象(例如“用户”)的应用程序。我有一个DAL层,应该处理数据库调用。
现在,我想从数据库中获取ID为100的用户。有两种选择:
选项1: User user = new User(100);
选项2: User user = BusinessLogicLayer.UserBL.GetUserFromID(100);
在选项1中-用户类是“自我维护的”,但是如果我要保持层的分离-它需要访问DAL层,而DAL层需要知道此对象(哪种类型创建循环引用)
在选项2中-用户类只是属性的集合。业务逻辑层和DAL层都知道这一点-但它本身没有能力(b / c,两者均被引用,但不能引用它们)。
首选方法是什么?
选项1:用户用户=新用户(100);
基于Clean Code
Bob叔叔等许多知名资源,数据结构应始终与其业务逻辑分开。在您的第一选择,User
既data model
和logic service
它是错误的。
如果您还希望删除用户或对其进行身份验证或...,该怎么办?第一种方法SOLID
(尤其是SRP
)违反原则非常不稳定。
选项2:用户user = BusinessLogicLayer.UserBL.GetUserFromID(100);
您应该有一个数据模型User
及其分离的业务逻辑类,例如UserService
,,AuthenticationService
...,并且这些服务使用您的DAL
(可能是您根据Repository
和Unit of work
模式编写的)获取数据并执行其功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句