`

八:依赖倒转原则

阅读更多
三种耦合关系:
在面向对象的系统里,两个类之间可以发生三种不同的耦合关系:
A:零耦合,如果两个类没有任何耦合关系,称为零耦合
B:具体耦合,具体耦合发生在两个具体的类实例之间,经由一个类对另一个具体类的直接引用造成.
C:抽象耦合,抽象耦合发生在一个具体类和一个抽象类(或接口)之间,使两个必须发生关系的类之间存有最大的灵活性

一:什么是依赖倒转
简单地说,依赖倒转原则要求客户端依赖于抽象耦合,即要针对接口编程,不要针对实现编程.针对接口编程的意思是说,应当使用接口和抽象类进行变量类型声明,参量类型的声明,方法返回类型声明,以及数据类型转换等.要保证做到这一点,一个具体的类应当只实现Java接口和抽象类中声明过的方法,而不应当给出多余的方法。
一般而言,在创建一个对象时,Java语言用new关键字以及这个类本身,Java语言中创建一个对象的过程是违背"开-闭"原则和依赖倒转原则的.正是由于这个原因,工厂模式应运而生,解决创建对象时的依赖倒转原则.

二:怎么样做到依赖倒转原则
以抽象方式耦合是依赖倒转原则的关键.由于一个抽象耦合关系总要涉及具体类从抽象类继承,并且需要保证在任何引用到基类的地方都可以改成其子类,因此里氏代换原则是依赖倒转原则的基础.在抽象层次上的耦合虽然有灵活性,但也带来了额外的复杂性,在某些情况下,如果一个具体类发生变化的可能性非常小,那么抽象耦合能发挥的好处十分有限,这时反而具体耦合反而会更好

三:几个符合依赖倒转原则的模式
A:工厂方法模式
B:模板方法模式
C:迭代子模式

四:联合使用接口和抽象类
由于Java抽象类具有提供缺省实现的优点,而接口具有其他所有的优点,所以联合使用两者就是一个很好的选择。首先声明类型的工作仍然由接口承担,但是同时给出的还有一个抽象类,为这个接口给出一个缺省的实现,其他同属于这个抽象类型的具体类可以选择实现这个接口也可以选择继承这个抽象类.
如果一个具体类直接实现这个接口,那么它就必须自行实现所有的方法,相反,如果它继承自抽象类的话,它就可以省去一些不必要的方法,因这它可以从抽象类中自动得到这些方法的缺省实现.如果需要向java接口中加入一个新的方法的话,那么只要同时在这个抽象类加入这个方法的一个具体实现就可以了,因为所有继承自这个抽象类的子类都会从这个抽象类得到这个具体的方法.----其实这就是缺省适配模式..在java语言中也用了这种缺省适配模式,而且还遵循一定的命名规范:如接口Collection对应的抽象类的名字是AbstractCollection.

依赖倒转,对象的创建很可能要使用对象工厂,从而避免对具体类的直接引用,此原则会导致大量的类,维护这样的系统要有较好的面向对象的知识。
分享到:
评论

相关推荐

    设计模式之依赖倒转原则

    依赖倒转原则(Dependency Inversion Principle,DIP)是面向对象设计的基本原则之一,它在软件工程中扮演着至关重要的角色。这个原则主要是为了降低模块之间的耦合度,提高系统的可扩展性和可维护性。在C#编程语言...

    依赖倒转原则例子程序DIP.zip

    依赖倒转原则(Dependency Inversion Principle,简称DIP)是软件设计中的一个重要原则,它属于SOLID设计原则之一。这个原则由Robert C. Martin在1994年提出,其核心思想是“高层模块不应该依赖于低层模块,两者都...

    依赖倒转原则

    依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是:High level modules should not depend upon low level modules...

    第二十九讲:基础四依赖倒转原则

    依赖倒转原则(Dependency Inversion Principle,简称DIP)是软件设计中的一个重要原则,它在面向对象编程领域具有深远的影响。这一原则的核心思想是“高层模块不应该依赖于低层模块,两者都应该依赖于抽象”。简单...

    读书笔记:java 23种设计模式 开闭原则 依赖倒转原则 迪米特法则 设计模式思想 Java入门demo.zip

    读书笔记:java 23种设计模式 开闭原则 依赖倒转原则 迪米特法则 设计模式思想 Java入门demo

    依赖倒置原则Demo

    依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计的基本原则之一,由罗伯特·C·马丁(Robert C. Martin)提出。这个原则指出,高层次的模块不应该依赖于低层次的模块,两者都应该依赖其抽象;...

    设计模式(五)之依赖倒转原则.zip

    依赖倒置原则的包含如下的三层含义: 1. 高层模块不应该依赖低层模块,两者都应该依赖其抽象 2. 抽象不应该依赖细节 3. 细节应该依赖抽象 就是面向接口编程,采用依赖倒置原则可以减少类间的耦合性...

    Java依赖倒转原则_动力节点Java学院整理

    依赖倒转原则是软件开发中的一个基本原则,尤其在Java编程中具有重要的意义。该原则指出,高层模块(通常处理复杂的业务逻辑)不应当直接依赖于底层模块(通常是基础的、具体的实现),两者都应该依赖于它们的抽象。...

    Head First 设计模式 JAVA源码

    所有的设计模式Java实现。 第一讲:简单工厂模式 第二讲:工厂方法模式 第三讲:抽象工厂模式 第四讲:工厂模式在开发中的运用 ...第二十八讲:依赖倒转原则 第二十九讲:迪米特法则 第三十讲:设计模式总结

    面向对象七大原则

    面向对象编程的七大原则是指在面向对象设计中所遵循的七个基本原则,它们是:开闭原则、依赖倒转原则、单一职责原则、接口隔离原则、迪米特法则、里氏替换原则和组合优于继承原则。 1. 开闭原则(Open-Closed ...

    面向对象设计原则Java.ppt

    依赖倒转原则提倡高层次的模块不应依赖于低层次的模块,两者都应依赖于抽象。这样,系统可以通过调整抽象层来适应变化,而无需更改大量具体实现代码。 5. **接口隔离原则 (Interface Segregation Principle, ISP)*...

    六种设计原则

    本文将详细探讨六种核心的设计原则,它们分别是开闭原则(Open-Closed Principle, OCP)、里氏代换原则(Liskov Substitution Principle, LSP)、迪米特法则(Law of Demeter, LoD)、依赖倒转原则(Dependency ...

    面向对象设计原则java

    详细介绍了: 单一职责原则 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特法则

    下载设计模式PPT学习教案.pptx

    本文将详细解析五个核心的设计原则,它们是面向对象设计的基础,包括开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则以及迪米特原则。 1. **开闭原则**: 开闭原则强调软件实体(如类、模块、函数等)应该对...

    java设计模式五大原则.doc

    Java 设计模式五大原则是软件设计中非常重要的原则,它们是:开-闭原则、里氏代换原则、依赖倒转原则、接口隔离原则和迪米特法则。这些原则都是软件设计的基石,它们指导我们如何设计出更加灵活、可维护、可扩展的...

    详解Java设计模式编程中的依赖倒置原则

    4. 有利于实现开闭原则:系统对扩展开放,对修改关闭,即在不修改原有代码的基础上,可以方便地添加新的功能。 在实践中,为了遵循依赖倒置原则,我们可以: 1. 尽可能地定义接口或抽象类,作为模块之间的交互点。...

    java设计模式考试题.docx

    5. **依赖倒转原则**:依赖倒转原则(DIP)指出要依赖于抽象,不要依赖于具体实现,即针对接口编程,而不是针对实现编程(选D)。 6. **复用关系**:在设计模式中,优先考虑利用的是委托、继承和创建这三种复用关系...

    程序员必备的七大面向对象设计原则

    依赖倒转原则的目的是为了减少系统的耦合度,提高系统的灵活性和可维护性。 三、单一职责原则 单一职责原则定义为:一个类应该只有一个理由去改变。单一职责原则的目的是为了提高类的内聚性和可维护性。 四、接口...

    设计模式六大原则

    依赖倒转原则主张高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。这意味着我们应该优先考虑使用合成或聚合而不是继承。 **具体方法:** - **尽量使用合成/聚合:** ...

    面向对象设计原则Java概要.ppt

    依赖倒转原则  依赖倒转原则概述 依赖倒转原则(Dependency Inversion Principle, DIP)强调要依赖于抽象,而不是依赖于具体实现。这意味着高层次的模块不应该依赖于低层次的模块,两者都应该依赖于相同的抽象。 ...

Global site tag (gtag.js) - Google Analytics