# S - 单一职责原则(single)
* 一个程序只做好一件事
* 如果功能过于复杂就拆分开,每个部分保持独立
# O - 开放封闭原则(open)
* 对扩展开放,对修改封闭
* 增加需求时,扩展新代码,而非修改已有代码
* 这是软件设计的终极目标
# L - 李氏置换原则
* 子类能覆盖父类
* 父类能出现的地方子类就能出现
* JS中使用较少(弱类型&继承使用较少)
# I - 接口独立原则
* 保持接口的单一独立,避免出现“胖接口”
* JS中没有接口(typescript例外),使用较少
* 类似于单一职责原则,这里更关注接口
# D - 依赖导致原则
* 面向接口编程,依赖于抽象而不依赖于具体
* 使用方只关注接口而不关注具体类的实现
* JS中使用较少(没有接口&弱类型)
>[danger]
>**用Promise来说明SO**
>* 单一职责原则:每个 `then` 中的逻辑只做好一件事
>* 开放封闭原则:如果新增需求,扩展 `then`
>* 对扩展开放、对修改封闭