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

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

依赖倒置原则

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

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

依赖倒置原则个人感悟

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

里氏代换原则

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

里氏代换原则个人感悟

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

里氏代换原则参考:
博文:http://blog.csdn.net/Bitou_Von/article/details/4210654
作者:bitou_von

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值