设计模式学习笔记

2018-10-27

本篇是对javascript设计模式的学习笔记

何为设计

  • 按照哪一种思路或者标准来实现功能
  • 功能相同,可能有着不同的设计方案来实现
  • 伴随着需求增加,设计的作用才能体现出来

设计准则

  • 准则1:小即是美
  • 准则2:让每个程序只做好一件儿事
  • 准则3:快速建立原型
  • 准则4:舍弃高效率而取可移植性
  • 准则5:采用纯文本存储数据
  • 准则6:充分利用软件的杠杆效应(软件复用)
  • 准则7:利用shell脚本提高杠杆效应和可移植性
  • 准则8:避免强制性的用户界面
  • 准则9:让每个程序都成为过滤器

SOLID五大设计原则

  • S-单一职责原则
  • O-开放封闭原则
  • L-李氏置换原则
  • I-接口独立原则
  • D-依赖导致原则

S-单一职责原则

  • 一个程序只做好一件儿事情
  • 如果功能过于复杂就把其拆分开来,每个部分保持独立

O-开放封闭原则

  • 对扩展开放,对修改封闭
  • 增加新需求时,扩展新代码,而非修改已有代码

L-李氏置换原则

  • 子类能覆盖父类
  • 父类出现的地方子类就能出现
  • JS中使用比较少(弱类型&继承使用比较少)

I-接口独立原则

  • 保持接口的单一独立,避免出现“胖接口”
  • js中没有接口(typescript例外),使用较少
  • 类似于单一职责原则,这里更关注接口

D-依赖倒置原则

  • 面向接口编程,依赖于抽象而不依赖于具体
  • 使用方只关注接口而不关注具体类的实现
  • JS中使用较少(没有接口&弱类型)

23种设计模式

创建型

  • 工厂模式(工厂方法模式、抽象工厂模式、建造者模式)
  • 单例模式
  • 原型模式

结构型

  • 适配器模式
  • 装饰器模式
  • 代理模式
  • 外观模式
  • 桥接模式
  • 组合模式
  • 享元模式

行为型

  • 策略模式
  • 模板方法模式
  • 观察者模式
  • 迭代器模式
  • 职责链模式
  • 命令模式
  • 备忘录模式
  • 状态模式
  • 访问者模式
  • 中介者模式
  • 解释器模式