大话设计模式读书笔记(依赖倒转原则)

人物:大鸟,小菜,娇娇

事件:小娇电脑坏了,小菜远程指导,换了内存条,就将蓝屏的问题解决了,但小娇收音机坏了,小菜却没法修


 依赖倒转原则

1.修电脑时发现:

    蓝屏可能是内存本身有问题或者与主板不兼容,主板不容易换但是内存换起来容易,同样硬盘,显卡,光驱等坏了也只需要更换即可

2.与编程有什么联系么?

    答:都是面向对象。硬盘,显卡,光驱等都可以理解为程序封装的类或程序集。电脑组件坏了更换即可,叫易插拔,在面向对象里,叫强内聚,低耦合

3.依赖倒转原则:

    (1)高层模块不应该依赖底层模块,两个都应该依赖于抽象

    (2)抽象不依赖于细节,细节依赖于抽象。也就是说要面向对象编程,不要面向实现编程

4.什么是倒转,高层依赖低层具体依赖什么?

    答:在面向对象编程开发时,为了使常用代码可以复用,一般会把常用代码封装成接口,比如把访问数据库的代码写成了接口,每次做新项目就去调用这些接口就行,这就是高层模块依赖低层模块

    问:如果当又做了一个新项目,发现业务逻辑是一样的,只是客户想用不同数据库的数据信息,由于高层模块依赖于低层访问数据库的模块,则没法复用高层模块,又该怎么解决呢?

    答:如果不管高层还是低层模块,都依赖于接口或者抽象类,只要接口稳定,则都很容易被复用

    问:为什么依赖了接口,就不怕更改且容易复用呢?

    答:里氏代换原则

里氏代换原则

里氏代换原则:子类必须能够替换掉他们的父类(因为只有当子类可以替换父类,软件单位的功能不受影响时,父类才能真正被复用,而子类也能在父类基础上增加新的行为)

举例1:如果父类是鸟类,且要求鸟会飞,那么,鸵鸟和企鹅能继承鸟类么,在生物界里,鸵鸟和企鹅是鸟,但在编程世界里,因为要求鸟会飞,所以鸵鸟和企鹅不能继承鸟类

举例2:猫是继承动物类的,以动物的身份拥有吃,喝,移动,叫等行为,当我们需要狗,牛等也拥有这样的行为的时候,由于他们都是继承动物,所以只要改变实例化对象即可

小结:正是由于子类的可替换性,才使得使用父类类型的模块,在无需修改的情况下就可以扩展,即里氏代换原则,使得开放-封闭原则成为了可能。依赖倒转就是谁也不要依靠谁,除了约定的接口

收音机怎么修

电脑时高内聚,低耦合,但是收音机却是典型的耦合过度,只要收音机出故障,任何问题都可能涉及其他部件,各个部件互相依靠,难以维护,如果说电脑代表面向对象编程的话,那收音机就是面向过程的设计了。所以,娇娇最后叫小菜帮忙修收音机,小菜能不能修呢

原文地址:https://www.cnblogs.com/wencheng9012/p/13372916.html