zoukankan      html  css  js  c++  java
  • 3依赖倒置原则

    依赖倒置原则

    依赖倒置原则英文名称是:Dependence Inversion Principle,简称DIP。

    1依赖倒置原则的定义
    依赖倒置原则的原始定义是:
    High level modules should not depend upon low level modules.Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.

    翻译过来,包括三层含义:
    ■ 高层模块不应该依赖低层模块,两者都依赖其抽象;
    ■ 抽象不依赖细节;
    ■ 细节应该依赖于抽象。

    依赖倒置原则

    在Java语言中,抽象就是指接口或抽象类,两者都是不能被实例化的;细节就是具体的实现类,实现类实现了接口或继承了抽象类,其特点是可以直接被实例化。
    依赖倒置原则在Java语言中的表现是:
    • 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生;
    • 接口或抽象类不依赖于实现类
    • 实现类依赖于接口或实现类     

    依赖倒置原则更加精确的定义就是“面向接口编程”——OOD(Object-Oriented Design)的精髓之一。依赖倒置原则可以减少雷剑的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性与可维护性。依赖倒置原则是JavaBean、EJB和COM等组件设计模型背后的基本原则。

    2依赖倒置原则的应用
    例如生活中开车的例子:
    司机只要会开车,就可以开奔驰车,也可以开宝马车。因此司机不依赖于奔驰车或者宝马车,而是通过Java中的接口,使他们之间的依赖关系倒置。
    依赖倒置原则的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,互不影响,实现模块之间的松耦合。在项目中只要遵循以下几个规则:
    • 每个类尽量都具有接口或是抽象类;
    • 任何类都不应该从具体类派生;
    • 尽量不要重写基类的方法。如果积累是一个抽象类,而且这个方法已经实现了,子类尽量不要重写。类之间依赖的是抽象,重写了非抽象方法,对依赖的稳定性会产生一定的影响。
    • 结合里氏替换原则使用。里氏替换原则指出父类出现的地方,子类就可以出现,结合依赖倒置原则可以得出一个通俗的规则:接口负责定义抽象方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑,同时在适当的时候对父类进行细化。

    依赖倒置原则在小型项目中很难体现出来,例如,使用SSH框架实现一个简单小型项目,基本上不费太大力气就可以完成,是否采用依赖倒置原则影响不大。但是,在一个大型项目中,采用依赖倒置原则具有非常多的优点,特别是规避一些非技术原因引起的问题。项目越大,需求变化的概率也越大,通过采用依赖倒置原则可以使接口或抽象类对实现类进行约束,从而减少需求变化引起的工作量剧增的情况。人员的变动在大型项目中也是时长存在的,如果设计优良、代码结构清晰,人员变化对项目的影响基本为0.大中型项目中的维护周期一般很长,采用依赖倒置原则可以让维护人员轻松的扩展和维护

    []:依赖倒置原则是6个设计原则中最难实现的原则,它是实现开闭原则的重要途径,依赖倒置原则没有实现,就不能对实现对扩展的开放,对修改关闭。在项目中,只要抓住“面向接口编程”就基本抓住了依赖倒置原则。




    只要你不停下来,慢一点也没关系。
  • 相关阅读:
    2018 ACM 网络选拔赛 徐州赛区
    2018 ACM 网络选拔赛 焦作赛区
    2018 ACM 网络选拔赛 沈阳赛区
    poj 2289 网络流 and 二分查找
    poj 2446 二分图最大匹配
    poj 1469 二分图最大匹配
    poj 3249 拓扑排序 and 动态规划
    poj 3687 拓扑排序
    poj 2585 拓扑排序
    poj 1094 拓扑排序
  • 原文地址:https://www.cnblogs.com/zyl-0110/p/14027141.html
Copyright © 2011-2022 走看看