CustomerController是高层业务的一个组件,依赖于CustomerC梦见亲人生病ontext是一个低层数据库的实现,如果现在需要把EF换成一个内存的实现或者mysql,需要修改CustomerController类,风险很大,所以应该依赖于低层业务的抽象
把低层业务方法抽象,比如查找,新增,抽象出一个接口,当不需要使用EF的时候,使用内存的实现替换
实现依赖注入的方式不由自己决定,而是交给一个IOC容器,需要什么由容器传入,比如生产需要使用EF,则由容器传入一个EfCustomerRepository,而测试需要使用内存级别的,则传入一个MemoryCustomerRepository
网友评论 ()条 查看