`
yanghuidang
  • 浏览: 914689 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

依赖倒转原则——里氏代换原则

 
阅读更多

lsp是dip的基础。

一、基本概念

抽象不应该依赖细节,细节应该依赖抽象。即针对接口编程,不要对实现编程。

A:高层模块不能依赖低层模块,两者都应依赖抽象。

B:抽象不应该依赖细节,细节应该依赖抽象。

二、里氏代换原则(LSP)

子类型必须能够替换掉它们的父类型

解释:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。

也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。

只有当子类可以替换父类,软件单位的功能不受到影响时,父类才真正被复用,而子类也能够在父类的基础上增加新的行为。

所以,正是由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。

三、总结

高层模块和低层模块都依赖于抽象:

2%XGVP0{ME`GUKI0}`2U_{F

依赖倒转原则是面向对象的标志,用哪种语言编写程序不重要,如果编写时考虑的是如何针对抽象编程而不是针对细节编程,即程序的所有依赖关系都终止于抽象类或接口。那就是面向对象设计,反之那就是过程化设计。


 所谓依赖倒置原则就是细节要依赖于抽象,抽象不要依赖于细节。简单的说就是要求对抽象进行编程,不要对实现进行编程,即针对接口编程,而不是针对实现编程。这样就降低了客户与实现模块间的耦合。

依赖倒置原则

A.高层模块不应该依赖于底层模块,两个都应该依赖于抽象。

B.抽象不应该依赖于细节,细节应该依赖抽象。

面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本。而一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断变动,只要抽象不变,客户程序就不需要变化。这大大降低了客户程序与实现细节的耦合度。

里氏替换原则:子类型必须能够替换掉它们的父类型。一个软件实体如果是使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成了它的子类,程序的行为没有变化。


也就是说应当使用Java接口和抽象Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。而不要用具体Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。
要保证做到这一点,一个具体Java类应当只实现Java接口和抽象Java类中声明过的方法,而不要给出多余的方法。



分享到:
评论

相关推荐

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

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

    设计模式之依赖倒转原则

    c# 设计模式 依赖倒转

    依赖倒转原则

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

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

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

    面向对象设计原则java

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

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

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

    面向对象设计原则

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

    六种设计原则

    这里包括六种软件设计原则,开闭原则,里氏代换原则,迪米特法则,依赖倒转原则,单一原则等等。

    24种设计模式介绍与6大设计原则

    3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。 4、接口隔离原则(Interface Segregation Principle) 这个原则的意思是:使用...

    面向对象设计原则PPT

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

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

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

    依赖倒置原则Demo

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

    第2章_面向对象设计原则.ppt

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

    Java23种基本的设计模式整料整理学习源码示例zip

    依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。 接口隔离原则(Interface Segregation Principle) 这个原则的意思是:使用多个隔离...

    设计模式——6大软件设计原则(demo案例实现,附带解析,快速掌握软件设计原则的精髓)

    2、里氏代换原则 3、依赖倒转原则 4、接口隔离原则 5、迪米特法则 6、合成复用原则 使用了一个个的demo案例,以通俗易懂的生活案例解析软件开发设计原则,掌握开发细节。写出耦合度低、易于扩展、更容易维护的...

    01 设计模式1

    3.1开闭原则此原则是由Bertrand Meyer提出的 3.2里氏代换原则里氏代换原则是由Barbara Liskov提出的 3.3依赖倒转原则指在软件里面

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

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

    面向对象的设计原则 doc

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

    C++ Design Pattern 23种设计模式(全_解释+源代码).zip

    C++ 23种设计模式(全_解释+源代码).zip 23种设计模式都是基于以下原则,务必记牢 依赖倒转原则 里氏代换原则 开闭原则 接口隔离原则 合成聚合复用原则 迪米特法则 23种设计模式如下:

Global site tag (gtag.js) - Google Analytics