控制反转IOC+依赖注入DI
2019-11-13 23:06:01参考
蒋金楠:书籍《ASP.NET Core 3框架揭秘》、博客园 :ASP.NET Core 3框架揭秘
官方文档:在 ASP.NET Core 依赖注入 在 ASP.NET Core 中将依赖项注入到控制器
一个接口注入多次:【ASP.NET Core】依赖注入高级玩法——如何注入多个服务实现类 、在.NET Core中处理一个接口多个不同实现的依赖注入问题
概念
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
控制反转是一种思想,依赖注入是一种设计模式。
依赖抽象不依赖具体
谁控制谁,控制什么
传统程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。
为何是反转,哪些方面反转了
有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。