推荐《unix/linux设计哲学》
一、设计
1.1描述
- 即按照哪一种思路或者标准来实现功能
- 功能相同,可以有不同设计方案来实现
- 伴随着需求增加,设计的作用才能体现出来
1.2《unix/linux设计哲学》
- 准则1:小即是美
- 准则2:让每个程序只做好一件事
- 准则2:快速建立原型
- 准则4:舍弃高效率而取可移植性
- 准则5:采用纯文本来存储数据
- 准则6:软件复用
- 准则7:使用shell脚本来提高软件复用
- 准则8:避免强制性的用户界面
- 准则9:让每个程序都成为过滤器
二、SOLID 五大设计原则
2.1 S - 单一职责原则
- 一个程序只做好一件事
- 如果功能过于复杂就拆分开,每个部分保持独立
2.2 O - 开放封闭原则(对扩展开放, 对修改封闭)
- 对扩展开放, 对修改封闭
- 增加需求时,扩展新代码,而非修改已有代码
- 这是软件设计的终极目标
2.3 L - 李氏置换原则
- 子类能覆盖父类
- 父类能出现的地方子类都能出现
- JS中使用较少(弱类型&继承使用较少)
2.4 I - 接口独立原则
- 保持接口的单一独立,避免出现“胖接口”
- JS中没有接口(ts例外),使用较少
2.5 D - 依赖导致原则
- 面向接口编程,依赖于抽象而不依赖于具体
- 使用方只关注接口而不关注具体类的实现
- JS中使用较少(没有接口&弱类型)
三、23中设计模式
3.1创建型
- 工厂模式(工厂方法模式,抽象工厂模式,建造者模式)
- 单例模式
- 原型模式
3.2结构型
- 适配器模式
- 装饰器模式
- 代理模式
- 外观模式
- 桥接模式
- 组合模式
- 享元模式
3.3行为型
- 策略模式
- 模板方法模式
-
观察者模式
-
迭代器模式
- 职责连模式
- 命令模式
- 备忘录模式
-
状态模式
- 访问者模式
- 中介者模式
- 解释器模式
四、两道面试题
第一题:
画出UML类图,用ES6语法写出该示例



第二题:


网友评论