跳转至

设计模式

参考资料

  • 大话设计模式
  • 设计模式: 可复用面向对象软件的基础
  • 重构: 改善既有代码的设计

简单工厂模式

  • 不是 GoF \(23\) 种设计模式之一
  • 一个描述接口的父类 + 多个实现接口的子类 + 一个根据条件决定实例化哪个子类的工厂类
  • 最后统一由工厂类创建对象,客户端当作父类使用

策略模式

  • 定义了算法家族, 分别封装起来, 让它们之间可以互相替换, 算法的变化不会影响使用算法的客户
    • 这里的父类子类就叫做抽象策略和具体算法
  • 使用方法就是往上下文类当中注入一个具体算法的实例
    • 上下文类负责和具体算法交互并返回结果
  • 经常结合简单工厂模式使用
    • 直接在上下文类中使用简单工厂创建具体算法实例
  • 策略模式封装了变化, 避免使用大量的条件判断语句
    • 先校验条件, 再选择具体算法, 这使得算法可以自然的建立在约定之上

单一职责原则

  • SRP: 一个类应该只有一个引起它变化的原因
  • 一个模块应该只对一类行为者负责

开闭原则

  • OCP: 软件实体 (类, 模块, 函数等等) 应该可以扩展, 但不可修改
  • 即使拓展没有提前预想到, 也应该立刻进行拓展对应抽象

依赖倒置原则

  • DIP: 高层模块不应该依赖低层模块, 二者都应该依赖抽象
    • 抽象不应该依赖细节, 细节应该依赖抽象
  • 系统中总会有一些违反 DIP 的具体实现
    • 隐藏隔离起来
  • 里氏替换原则是开闭原则和依赖倒置原则的基础
    • 子类必须完全实现父类的功能