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


    人物:大鸟,小菜,娇娇

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


     依赖倒转原则

    1.修电脑时发现:

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

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

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

    3.依赖倒转原则:

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

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

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

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

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

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

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

        答:里氏代换原则

    里氏代换原则

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

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

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

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

    收音机怎么修

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

  • 相关阅读:
    os.environ的详解
    request.headers.get头部获取内容的缺失
    mysql根据逗号分割的字符串去关联查询另外一个表的数据
    Flask路由中使用正则表达式匹配
    Mac OS下安装mysqlclient遇到的一些坑
    【uWSGI】 listen queue of socket (fd: 3) 错误分析
    redis zset底层实现原理
    计算机网络05 传输层
    计算机网络04 网络层
    计算机网络03 数据链路层
  • 原文地址:https://www.cnblogs.com/wencheng9012/p/13372916.html
Copyright © 2020-2023  润新知