# S - 單一職責原則(single)
* 一個程序只做好一件事
* 如果功能過于復雜就拆分開,每個部分保持獨立
# O - 開放封閉原則(open)
* 對擴展開放,對修改封閉
* 增加需求時,擴展新代碼,而非修改已有代碼
* 這是軟件設計的終極目標
# L - 李氏置換原則
* 子類能覆蓋父類
* 父類能出現的地方子類就能出現
* JS中使用較少(弱類型&繼承使用較少)
# I - 接口獨立原則
* 保持接口的單一獨立,避免出現“胖接口”
* JS中沒有接口(typescript例外),使用較少
* 類似于單一職責原則,這里更關注接口
# D - 依賴導致原則
* 面向接口編程,依賴于抽象而不依賴于具體
* 使用方只關注接口而不關注具體類的實現
* JS中使用較少(沒有接口&弱類型)
>[danger]
>**用Promise來說明SO**
>* 單一職責原則:每個 `then` 中的邏輯只做好一件事
>* 開放封閉原則:如果新增需求,擴展 `then`
>* 對擴展開放、對修改封閉