• 依赖注入的理解


        最近学习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注入原理就是这么一个过程。使用依赖注入的思想,就避免不了和接口打交道,因为接口是抽象的,继承该接口的类可以是实例化接口的方法,然后做对应的事情。

  • 相关阅读:
    线程生命周期
    java集合源码分析几篇文章
    Java中的equals和hashCode方法详解
    java集合(一)
    volatile和synchronized实现内存可见性的区别
    动态代理的原理
    过滤器的使用
    pageBean的实体类
    FindUserByPageServlet
    用户信息系统_serviceImpl
  • 原文地址:https://www.cnblogs.com/sunshine-wy/p/9199412.html
Copyright © 2020-2023  润新知