什么是依赖
如果我们用EF操作数据库。
那么CustomerController就对Context形成了依赖。
我们这种依赖的写法就是隐式的依赖
显式依赖于隐式依赖
怎么理解隐式的依赖呢?
三层架构是比较清晰的 从BLL到DAL
当你进去一个BLL有好几千行代码的时候,你就崩溃了,因为你跟不知道BLL里面有多少个外部的DAL引用。造价上Redis、log这些外部的引用。这个类就会变得很庞大,很复杂,
导致我们没有办法去维护。甚至你都不知道这个类和其他哪些类有关系。
显式依赖,像这种把所有的依赖都在构造函数内初始化
依赖倒置
依赖于高层业务,不依赖于低层业务的具体实现,依赖于具体的抽象
CustomerController就是一个高层的业务。
DBcontext就是一个低层业务的实现。如果现在要换成MySql的话 就需要在CustomerController里面修改context的实例
这个时候我就要依赖于底层业务的实现。
通过Respository
当我们不用EF的时候,CustomerContext就可以改成右边的MemoryCustomerRespository替换掉当前的EF