依赖倒置原则


依赖倒置与控制反转

  1. 六大设计原则之依赖倒置原则(DIP) - 简书 (jianshu.com)
  2. Spring IoC有什么好处呢? - 知乎 (zhihu.com)

DI依赖倒置

首先是依赖倒置原则:

1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。
2、抽象不应该依赖于细节,细节应该依赖于抽象。

举例:pizza店

无依赖倒置:

依赖关系

有依赖倒置:

依赖倒置

可以看出,上层的Pizza店依赖于抽象的接口Pizza,而不是直接依赖下层的细节实现对象。

总结:

  • 上层依赖抽象
  • 细节依赖抽象

IOC控制反转

其次,控制反转,依赖注入是实现依赖倒置的一种方法。

IOC与DI

  • 依赖倒置原则,控制反转IOC,依赖注入DI

  • 降低耦合

  • 不用在上层类中调用下层的构造函数,而是直接将下层的对象构造好了之后传入上层类。

    1
    2
    3
    4
    5
    6
    7
    class Car{
    private Framework f;
    Car(){
    // 如果下层的FrameWork类变动,需要传入参数,这个上层的Car类也需要改
    this.f = new FrameWork();
    }
    }

    修改使用依赖倒置后,会变成:

    1
    2
    3
    4
    5
    6
    7
    class Car{
    private FrameWork f;
    // 这样直接传入下层类对象过来就行了,而不需要具体关心其实现
    Car(FrameWork f){
    this.f = f;
    }
    }
  • 上面是构造方法传入,还有Set传递和接口传递


文章作者: SongX64
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 SongX64 !
  目录