我有一个从数据层检索数据的存储库(CustomerRepository)。大多数业务逻辑位于存储库接受或返回的实体类(Customer)中。
但是,您将全局实体业务逻辑(适用于所有客户)放在哪里?
例如,我可能不想将所有客户都返回给某些用户。我不想把这个逻辑放到存储库中。
发布于 2009-06-18 17:17:28
我同意Robert Munteanu的观点。
基本上,您将模型中不固有的业务逻辑汇总到中间层中。中间层是业务层/业务对象/业务逻辑层/等等,但仅被称为服务层。它不一定是term服务,它是术语服务的广泛使用,因为它聚合了特定应用程序领域的功能。
基本上,您将拥有一个包含存储库引用的CustomerService类。表示层将引用服务层类。
还有一个额外的区别,可以根据您的名字来猜测您正在使用.net,并且可能使用LINQ to SQL作为您的存储库,如NerdDinner中所述。
存储库通常将IQueryable返回给服务层,允许服务层将多个查询链接在一起以构建不同的结果集。然后,服务使用ToList或其他类似方法计算表达式,并将其返回给表示层。
发布于 2009-06-18 17:02:56
将其放入另一个存储库(BusinessRuleRepository),并让CustomerRepository使用它。
或
如果业务逻辑仅限制用户可以看到的结果,那么您可能希望将外观模式与工厂一起使用。在本例中,您将拥有一个处理CustomerRepository和LimitedCustomerRepository (可能封装CustomerRepository)的ICustomerRepository,以及一个为用户返回适当ICustomerRepository的CustomerRepositoryFactory。
发布于 2009-06-18 16:52:10
将其封装在一个服务中。
https://stackoverflow.com/questions/1013855
复制相似问题