`

八:依赖倒转原则

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

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

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

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

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

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

相关推荐

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

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

    设计模式之依赖倒转原则

    c# 设计模式 依赖倒转

    依赖倒转原则

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

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

    NULL 博文链接:https://364232252.iteye.com/blog/2371235

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

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

    依赖倒置原则Demo

    http://blog.csdn.net/xingjiarong/article/details/50094307

    Head First 设计模式 JAVA源码

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

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

    主要介绍了Java依赖倒转原则的定义及问题由来解决方案,感兴趣的朋友一起看看吧

    面向对象设计原则java

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

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

    主要介绍了详解Java设计模式中的依赖倒置原则,针对面对对象编程中的抽象的运用,需要的朋友可以参考下

    24种设计模式C#版

    3、依赖倒转原则【DEPENDENCE INVERSION PRINCIPLE】:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程。 4、接口隔离原则...

    面向对象设计原则

    介绍了面对对象的七大原则:单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则;

    设计模式6大原则

    设计模式原则:单一职责原则,里氏替换,依赖倒转,接口隔离,开放关闭等等。

    SQL语句优化2

    依赖倒转原则(DIP):要依赖于抽象,不要依赖于具体。 接口隔离原则(ISP):使用多个专门的接口比使用单一的总接口要好。 合成/聚合复用原则(CARP):要尽量使用合成/聚合,尽量不要使用继承。 迪米特法则(LoD):一...

    软件体系结构七大设计原则

    软件体系结构七大设计原则,开闭原则 里氏代换原则 依赖倒转原则 迪米特法则 迪米特法则

    面向对象设计原则PPT

    面向对象设计原则概述 单一职责 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特法则

    对面向对象设计原则的总结

    对面向对象设计原则的总结,设计模式:“开-闭”原则,里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则

    面向对象的设计原则 doc

    面向对象设计根本的指导原则是提高可维护性和可复用性。这些原则主要有:1. 开闭原则;2. 依赖倒转原则;3. 里氏代换原则;4. 合成/聚合复用原则;5. 迪米特原则;6. 接口隔离原则

    Java设计模式-面向对象七大设计原则

    例如:随着计算机的不断发展,程序学习这门技术也越来越重要,很多人都开启了...面向对象设计原则一共有七个:开闭原则、里氏替换原则、依赖倒转原则、单一职责原则、接口隔离原则、组合/聚合复用原则、迪米特法则。

Global site tag (gtag.js) - Google Analytics