设计模式 依赖倒转原则 & 里氏代换原则

前端之家收集整理的这篇文章主要介绍了设计模式 依赖倒转原则 & 里氏代换原则前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

依赖倒置原则

A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
B.抽象不应该依赖于具体,具体应该依赖于抽象。

所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

依赖倒置原则个人感悟

依赖倒置原则于现实的例子就是《大话设计模式》里面说到的内存、显卡等部件和主板的关系,内存、显卡等部件就是低层次的模块,主板就是高层次的模块,接口就相当于它们连接的插口。如果主板设计的时候依赖于特定的内存、显卡等部件来设计,那么内存一坏,岂不是整块主板都用不了了?(高层次的模块不应该依赖于低层次的模块)而如果主板依赖于接口(依赖于抽象),那么部件坏了,只要找到相同接口的部件来更换就可以了,而不会影响高层次的主板。同样主板坏了,也不应该让所有部件报废。依赖倒转原则是面向对象的标志,用哪种语言编写程序不重要,如果编写时考虑的是如何针对抽象编程而不是针对细节编程,即程序的所有依赖关系都终止于抽象类或接口。那就是面向对象设计,反之那就是过程化设计。

里氏代换原则

里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

里氏代换原则个人感悟

要符合里氏代换原则,在继承的时候,子类不应该覆盖基类的非抽象函数,原因是用户可能会使用一个子类的基类功能来使程序正常运作,但如果你在子类中覆盖了基类的方法用户由于不知道类的实现原理,就会使程序发生了错误,因此所有派生类的行为功能必须和使用者对其基类的期望保持一致。违反里氏代换原则的继承关系都不应该实现,如正方形是矩形和鸵鸟是鸟的继承关系实际上是错误的,因为子类并与基类的所有功能并不是一致的。如果一个继承类的对象可能会在基类出现的地方出现运行错误,则该子类不应该从该基类继承,或者说,应该重新设计它们之间的关系。符合里氏代换原则的类扩展不会给已有的系统引入新的错误

里氏代换原则参考:
博文:http://www.jb51.cc/article/p-ceefgbij-xq.html
作者:bitou_von

依赖倒置原则参考: 书籍:《大话设计模式》 作者:程杰

原文链接:https://www.f2er.com/javaschema/284591.html

猜你在找的设计模式相关文章