在使用存储库和服务模式的应用程序中,如何确保始终调用服务层而不是直接调用存储库?
例子 :
class OrderRepository
{
void CreateOrder(Order o)
...
}
class OrderService
{
void CreateOrder(Order o)
{
//make some business logic tests
...
//call repository
_orderRepository.CreateOrder(o);
}
}
我看到两个问题:
程序员可能会直接调用存储库,因为它不知道服务的存在(有时它不像本示例中那样简单(1 个服务 = 1 个具有相同方法名称的存储库)。某些应用程序没有很好的文档记录。或者有人赶时间可以忘记检查对应的服务是否存在(错误)。
完全不同:很久以前有人创建了一些直接使用订单存储库的视图+控制器。那时不需要做一些业务逻辑检查或额外的操作,只有订单库存在(因为那里根本不需要)。如果稍后在创建订单时需要一些额外的操作,则会创建一个服务。问题是所有调用旧存储库的控制器都需要更改。存储库原则/想法(以及分层代码)是否应该使各个部分相互独立?