zoukankan      html  css  js  c++  java
  • 依赖注入和控制反转概念及目的(新手必读)

    DI——Dependency Injection 依赖注入
    IoC——Inversion of Control 控制反转

    为何叫反转:
    反转是相对于正向而言的,那么什么算是正向的呢?
    考虑一下常规情况下的应用程序,如果要在A里面使用B,你会怎么做呢?
    当然是直接去创建B的对象,也就是说,是在A类中主动去获取所需要的外部资源B,这种情况被称为正向的。

    那么什么是反向呢?
    就是A类不再主动去获取B,而是被动等待,等待IoC/DI的容器获取一个B的实例,然后反向的注入到A类中。

    没有IoC/DI的时候,常规的A类使用B类的示意图

    有IoC/DI的容器后,A类不再主动去创建B了,而是被动等待,等待IoC/DI的容器获取一个B的实例,然后反向的注入到A类中:

    由此可见依赖注入和控制反转是对同一件事情的不同描述,就是它们描述的角度不同而已啦。

    依赖注入是从应用程序的角度在描述:应用程序依赖容器创建并注入它所需要的外部资源;
    而控制反转是从容器的角度在描述:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。


    依赖注入的目的:

    应用程序从主动变为被动的等待IoC/DI容器来创建并注入它所需要的资源了,这样有效的分离了对象和它所需要的外部资源,使得它们松散耦合。
    有利于功能复用,更重要的是使得程序的体系结构变得非常灵活。

    图画的丑,请勿吐槽!!!

  • 相关阅读:
    2012年互联网教育行业观察
    SharePoint 2013的简单介绍
    让Node.js在Azure上运行3
    让Node.js在Azure上运行2
    有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"。
    json序列化与反序列化
    golang连接mysql数据库进行查询
    简单的WCF服务
    百钱买百鸡问题
    大叔程序员的第九天 @广播启动Activity
  • 原文地址:https://www.cnblogs.com/oldUncle/p/6224266.html
Copyright © 2011-2022 走看看