zoukankan      html  css  js  c++  java
  • 依赖注入的理解

        最近学习core,琢磨配置文件读取当中,对其中一些概念不是很清晰,比如依赖注入。

        什么是依赖注入,为什么要用这种形式,即它解决了什么问题。上网科普了一番之后心里有了比较清晰的答案。

        依赖是一种关系,依赖注入,就是将这种关系注入到要使用的对象里,这样做的好处是解耦!

        举个栗子:

        

    Public Person{
    ...
    public void drive(){
      Car toyota=new Car("TOYOTA");
      toyota.挂档;
      toyota.踩油门;
      toyota.打方向;
    }
    }

        这段代码里,Person类依赖了Car类,因此这两个类就产生了耦合,那么怎么解决这个问题呢,我们先理清下面几个概念:

        依赖倒置,即控制反转,实现依赖反转的方式是依赖注入。即,通过依赖注入可以实现控制反转。

        而依赖倒置有一个原则很重要:上层模块不应该依赖于下层模块,它们共同依赖于一个抽象;抽象不能依赖于具象,具象依赖于抽象。

        所以根据这个原则,Person里是不可以依赖Car的,做法是Person依赖于一个抽象 ICar:

        

    Public Person{
    private ICar car;
    public Person(ICar onecar){
      car=onecar;
    }
    public void drive(){
      car.挂档;
      car.踩油门;
      car.打方向;
    }
    }

        进行注入以及调用的时候:

    Toyota toyota=new Toyota();
    Person boy=new Person(toyota);
    boy.drive();

        以上就完成了一个简单的一个依赖注入的案例,core里Startup中的ConfigureServices注入原理就是这么一个过程。使用依赖注入的思想,就避免不了和接口打交道,因为接口是抽象的,继承该接口的类可以是实例化接口的方法,然后做对应的事情。

  • 相关阅读:
    Chrome开发者工具中Elements(元素)断点的用途
    最简单的SAP云平台开发教程
    Java实现 LeetCode 495 提莫攻击
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 492 构造矩形
  • 原文地址:https://www.cnblogs.com/sunshine-wy/p/9199412.html
Copyright © 2011-2022 走看看