Object Design Principles & Patterns

面向对象的设计原则
  • Liskov替换原则LSP
    • 子类或者实现类一定是可以替换基类的,即子类或者实现类不能添加任何父类没有的附加约束
    • 解决方案:父子关系解除,根据二者共性行为,继承抽象类或者接口
  • 开放封闭原则OCP
    • 对扩展开放,对更改封闭
    • 解决方案:基本同上,引入抽象类或接口,新需求可以继承自抽象类,而非更改原来的具体类
  • 单一职责原则SRP
    • 一个类有且仅有一个引起它变化的原因
    • 体现内聚性:一个模块的组成元素之间的功能相关性
    • 一个类的职责发生变化的原因一般是需求发生变化,如果一个类职责过多,则会牵一发而动全身
    • 解决方案:拆类
  • 接口隔离原则
    • 接口的SRP:接口不应该拥有过多协议,以避免接口污染
    • 解决方案:使用 适配器模式 分离接口,采用多重继承
  • 依赖倒置原则
    • 高层模块不依赖于低层模块
      • 所谓高层,指的是由低层类定义其行为的类
    • 抽象不依赖于细节
    • 面向接口编程
    • 解决方案
      • 找到真正的抽象(系统的本质特征)用通信图
      • 工厂模式
    • 设计原则
      • 成员变量不应持有其他类的引用
        • 工厂模式解决
      • 不继承于具体类
      • 不覆盖基类已实现的方法
  • 迪米特原则
    • 类与类之间应该尽可能不知道其他类,即应该尽可能解耦和
面向对象的设计模式
  • GoF设计模式
  • 应用设计模式