public class ProductController : Controller { private readonly IProductService _productService; public ProductController(IProductService productService) { _productService = productService;//这里你看起来是不是很怪,接口赋值给接口,没有说谁是真正的实现者 }那么运行的时候到底谁是真正的实现者,由IOC来决定, 你这里看不到就是 分离了 按OOP的很多思考原则来说,就好就是你不认识我 我不认识你,那么就是解耦 当然 做人最好不好解耦 呵呵
IOC就是说对象的使用者不直接创建对象,而是将对象创建放到其他地方比如容器或者工厂。但是,对象使用者虽然不创建对象但要使用对象,怎么办?这就需要使用DI像对象注入进来。 其实就是从 ClassA a = new ClassA();--> IA a = new ClassA();-->IA a = Factory.CreateA()/IA a = Factory.CreateA()+反射-->IOC容器,一步步演变而来,目的就是对象使用者和对象尽可能松耦合。
{
private readonly IProductService _productService;
public ProductController(IProductService productService)
{
_productService = productService;//这里你看起来是不是很怪,接口赋值给接口,没有说谁是真正的实现者
}那么运行的时候到底谁是真正的实现者,由IOC来决定,
你这里看不到就是 分离了
按OOP的很多思考原则来说,就好就是你不认识我 我不认识你,那么就是解耦
当然 做人最好不好解耦 呵呵
其实就是从 ClassA a = new ClassA();--> IA a = new ClassA();-->IA a = Factory.CreateA()/IA a = Factory.CreateA()+反射-->IOC容器,一步步演变而来,目的就是对象使用者和对象尽可能松耦合。
这相当于自己的一些零件是可替换的,使用者根据规范做的新零件可以换掉自带的。框架要把自己说明书的一部分交给使用者来定义。使用了依赖注入,就有了统一的方式。成熟的依赖注入框架的功能还不止这些,比如程序集自动发现、生成动态代理、装饰器模式等等,用好了能提高不少生产力。