我正在使用架构客户端代码--->商业服务--->库中。
存储库类实现IRepository接口,而Service类将IRepository作为客户端代码传递给它的构造函数中的参数。
现在问题是,客户端代码是否应该能够直接调用存储库类,只是实例化它以将其传递给服务类?在我看来,客户端代码应该能够通过服务类调用存储库类函数 ONLY ,这些服务类在调用存储库之前应用业务规则。因为直接调用存储库类而不通过业务层将根据域业务规则简单地导致无效数据。
但问题是如何防止客户端代码直接调用存储库中的方法,同时根据抽象的IRepository接口保留服务类。换句话说,我需要使客户端代码能够实例化存储库类,然后将它们传递给服务类,但同时无法直接调用存储库类中的方法。