0%

面向对应设计原则

面向对象核心原则:抵御变化

  • 隔离变化:模块化,模块间解耦
  • 各司其职:模块有用各自的功能

    对象是什么

  • 代码层面:封装了方法与数据
  • 规格(架构)层面:一系列的接口
  • 概念(业务)层面:对某种责任(功能)的抽象

面向对象设计的原则

依赖倒置原则(DIP)

  • 高层(稳定)不应该依赖于低层(变化),两者均应该依赖于抽象
  • 抽象(稳定)不应该依赖与细节(变化)

    开发封闭原则(OCP)

  • 对扩展开发,对更改封闭
  • 类模块应该是可扩展的,但是不可修改的

    单一职责原则(SRP)

  • 一个类应该仅有一个引起他变化的原因(类具有极强的独立性)
  • 变化的方向隐含着类的责任

    Liskov替换原则(LSP)

  • 子类必须能够替换它们的基类(IS-A),避免乱继承,导致代码结构换了
  • 继承表达类型抽象

    接口隔离原则(ISP)

  • 接口应该小而完备.
  • 不然调用者会产生迷茫,甚至调用类内部接口,导致类不利于调整,因为调用关系,类接口调整,将导致调用者也随之调整

    优先使用对象组合,而不是类继承

  • 组合比继承更解耦

    封装变化点

  • 一侧变化一侧稳定

    针对接口编程

  • 不将变量类型声明为某个特定类型的具体类
  • 可以减小各部分的依赖