美文网首页
依赖倒置原则

依赖倒置原则

作者: 简石榴 | 来源:发表于2018-12-05 12:44 被阅读0次

    依赖倒置原则(Dependence Inversion Principle,DIP)定义:

    High level modules should not depend upon low level modules.Both should depend upon abstractions should not depend upon details.Details should depend upon acstractions.
    (高层次的模块不应该依赖低层次的模块,他们都应该依赖抽象。 抽象不应该依赖细节,细节应该依赖抽象。)[OOD Object-Oriented Design]

    在Java中的表述为:
    1、模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类产生的
    2、接口或抽象类不依赖于实现类
    3、实现类依赖接口或抽象类

    算是优点吧
    使用依赖倒置原则能够减少类间的耦合性
    eg:

    public class Driver {
        public void drive(Benz benz)
        {
            benz.run();
        }
    }
    
    public class Benz {
        public void run()
        {
            //do something    
        }
    }
    
    public class Client {
        public static void main (String[] args)
        {
            Driver zhangsan = new Driver();
            Benz benz = new Benz();
            zhangsan.drive(benz);
        }
    }
    

    上面程序表述的问题,如果司机不仅仅开奔驰车,还要开其他类型的车,程序就不合理了。
    解决方法 让司机操作一个不区分类型的车 奔驰什么的依赖于这个不区分类型的车。
    这也是依赖倒置原则说明的高层模块不依赖于底层模块,都应该依赖于它的抽象

    依赖有三种写法:
    1、通过构造函数注入
    2、Setter依赖注入
    3、接口声明依赖对象(接口注入)

    最佳实践:
    要遵循以下几点规则
    1、每个类都有接口或抽象类,或者抽象类和接口两者都具备
    2、变量的表面类型尽量是接口或者抽象类
    3、任何类都不应该从具体类派生
    4、尽量不要覆写基础类的方法
    5、结合里氏替换原则(父类出现的地方子类就能出现)使用

    依赖倒置原则是实现开闭原则的重要途径,它没有实现对扩展开放对修改关闭。基本就是"面向接口编程"

    相关文章

      网友评论

          本文标题:依赖倒置原则

          本文链接:https://www.haomeiwen.com/subject/wxqicqtx.html