SOLID五大设计原则:从设计到模式
- 单一职责
- 里氏替换
- 依赖倒置
- 接口隔离
开闭原则
最小知晓原则
- 好莱坞原则
让每个程序成为过滤器
ls # 显示文件
# 过滤器风格
ls | grep *.json
ls | grep *.json | grep 'package'
设计的作用
按照那种思路或标准来实现功能
功能相同,可以有不同的设计方案来实现
伴随着需求的增加,设计的作用才能体现出来
《UNIX/LINUX设计哲学》
- 小即是美
2. 让每个程序之做好一件事
3. 快速建立原型
4. 舍弃高效率而取可移植性
5. 采用纯文本来存储数据
6. 充分利用软件的杠杆效应(软件复用)
7. 使用 shell 脚本来提高杠杆效应和可移植性
8. 避免强制性的用户界面
9. 让每个程序都称为过滤器
小准则
- 允许用户定制环境
- 尽量是操作系统内核小而轻量化
- 使用小写字母并尽量简写
- 沉默是金
- 各部分之和大于整体
- 寻求90%的解决方案(2/8定律)
你所设计的产品不能100%的满足用户需求,满足80%的用户
SOLID 五大设计原则
S 单一职责原则
Single Responsibility Principle
一个程序只做好一件事情,职责分离
如果功能过于复杂就拆分开,每个部分保持独立
- 用的很多,例如 Promise的then
- 微服务就是单一职责原则
模块化
每个模块都有明确的功能
新增功能,只需要增加模块,不需要修改原来的核心代码
- 单一职责 & 开放封闭原则
O 开放封闭原则
Open Closed Principle
对扩展开放,对修改关闭
增加需求时,扩展新代码,而不是修改已有代码;这是软件设计的终极目标
- jQuery的 extends
- eggjs的 plugins机制
- webpack的 load机制,不需要去修改 webpack的源码
- css-load
- file-load
- ts-load
L 李氏置换原则
Liskov Substitution Principle
子类能覆盖父类
父类能出现的地方,子类就能出现
JS中使用较少,(弱类型,继承使用较少)
I 接口独立原则
Interface Segregation Principle
保持接口的单一独立,避免出现“胖接口”
类似于单一职责原则,这里更关注接口
JS中没有接口,使用较少,ts除外
D 依赖倒置原则
Dependency Inversion Principle
面向接口编程,依赖于抽象而不依赖具体
用户只关注接口,而不关注具体类的实现
JS中使用少,(没有接口,弱类型,php Interface )
设计模式参考
https://blog.csdn.net/u011537073/article/details/115999506