美文网首页
面向对象设计原则

面向对象设计原则

作者: _Walker__ | 来源:发表于2021-11-25 23:19 被阅读0次

    六大原则

    1. 单一职责 (SRP, Single Responsibility Principle)
    2. 开闭原则 (OCP, Open Close Principle)
    3. 里氏替换原则 (LSP, Liskov Substitution Principle)
    4. 依赖倒置原则 (DIP, Dependence Inversion Principle)
    5. 接口隔离原则 (ISP, Interface Segregation Principle)
    6. 迪米特原则 (LOD, Law of Demeter、Least Knowledge Principle)

    1 单一责任原则
    一个类应该只有一个引起变化的原因

    • 通常,一个类的功能数 = 引起变化的原因数

    2 开放-封闭原则
    类应该对拓展开放,对修改关闭

    设计目标是允许类容易扩展,在不修改现有类的基础上,就可搭配新的行为。

    3 里氏替换原则
    继承必须确保超类所拥有的性质在子类中仍然成立。

    • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
    • 子类中可以增加自己特有的方法
    • 当子类的方法重载父类的方法时,方法的前置条件(即方法的输入参数)要比父类的方法更宽松
    • 当子类的方法实现父类的方法时(重写/重载或实现抽象方法),方法的后置条件(即方法的的输出/返回值)要比父类的方法更严格或相等

    4 依赖倒置原则(DIP,Dependency Inversion Principle)
    要依赖抽象,不要依赖具体类。
    不能让高层组件依赖低层组件,而且,不管高层或低层组件,“两者”都应依赖于抽象。
    (所谓倒置,是指低层去依赖低层的抽象)

    实践的指导方针(尽量达到,而不是严格达到)

    • 变量不可以持有具体类的引用
    • 不要让类派生自具体类
    • 不要覆盖基类中已实现的方法

    5 接口隔离原则
    客户不应该被迫依赖于它不会使用的方法

    要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

    6 “最少知识”原则
    只和你的密友交谈
    白话:让类间的依赖变少

    指导方针(主要为规避“链式调用”):在对象的方法内,只应该调用属于以下范畴的方法

    • 该对象本身
    • 参数传递进来的对象
    • 此方法创建或实例化的任何对象
    • 该对象的任何组件(字段)

    缺点:

    • 会产生更多的“包装”类
    • 增加复杂度和开发时间
    • 降低运行性能

    其他原则

    封装变化
    找出需要变化的部分,把它们独立出来,避免和不需要变化的代码混在一起。

    针对接口编程,不针对实现编程
    用接口(超类型)表示行为,通过行为类提供实现,而不是类本身来实现。

    多用组合,少用继承
    使用组合建立系统具有很大的弹性,不仅可将算法族封装成类,更可以“运行时动态改变行为”。

    为了交互对象间的松耦合设计而努力

    好莱坞原则
    别调用我们,我们会调用你

    白话:允许低层组件将自己挂钩到系统(高层组件)上,但是高层组件决定什么时候、怎样使用这些底层组件。
      模版方法遵守了好莱坞原则,它的高层组件是基类(定义算法流程的部分)。

    相关文章

      网友评论

          本文标题:面向对象设计原则

          本文链接:https://www.haomeiwen.com/subject/tvzlaltx.html