设计原则
01何为设计
- 即按照哪一种思路或标准来实现功能
- 《UNIX/LINUX设计思想[哲学]》
《UNIX/LINUX设计思想[哲学]》
- 准则1:小即是美
- 准则2:让每个程序只做好一件事
- 准测3:快速建立原型
- 准则4:舍弃高效率而取可移植性
- 准则5:采用纯文本来存储数据(可读性)
- 准则6:充分利用软件的杠杆效应(软件服用)
- 准则7:使用shell脚本来提高杠杆效应和可移植性
- 准则8:避免强制的用户界面(系统和用户界面分离)
- 准则9:让每个程序都成为过滤器
小准则
- 小准则:允许用户定制环境
- 小准则:记录使操作系统内核小而轻量化
- 小准则:使用小写字母并尽量简写
- 小准则:沉默是金
- 小准则:各部分之和大于整体
- 小准则:寻求90%的解决方案(2/8定律)
02 五大设计原则
SOLID五大设计原则
- S - 单一职责原则
- O - 开放封闭原则
- L - 李氏置换原则
- I - 接口独立原则
- D - 依赖倒置原则
S-单一职责原则
- 一个程序只做好一件事
- 如果功能过于复杂就拆分开,每个部分保持独立
O-开放封闭原则
- 对扩展开放,对修改封闭
- 增加需求时扩展新代码,而非修改已有代码
- 这是软件设计的终极目标
L-李氏置换原则
- 子类能覆盖父类
- 父类能够出现的地方子类就能出现
- JS中使用较少(弱类型&继承使用较少)
I-接口独立原则
- 保持接口的单一独立,避免出现“胖接口”
- JS中没有接口(TS例外),使用较少
- 类似于单一职责原则,这里更关注接口
D-依赖倒置原则
- 面向接口编程,依赖于抽象而不依赖于具体
- 使用方只关注接口而不关注具体类的实现
- JS中使用较少(没有接口&弱类型)
总结
- SO体现较多
- LID体现较少
示例
/**
* SO示例
*/
function loadImg(src) {
let promis = new Promise(function (resolve, reject) {
let img = document.createElement('img');
img.onload = function () {
resolve(img);
}
img.onerror = function () {
reject('图片加载失败');
}
img.src = src;
});
return promis;
}
let src = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png';
let result = loadImg(src);
result.then(function (img) {
alert(`width:${img.width}`);
return img;
}).then(function (img) {
alert(`height:${img.height}`);
return img;
}).then(function (img) {
alert(img.src);
}).catch(function (err) {
alert(err);
});
03 从设计到模式
- 设计
- 模式
- 分开
- "从设计到模式"
04 介绍23种设计模式
- 创建型
- 组合(结构)型
- 行为型
创建型
- 工厂模式(工厂方法模式,抽象工厂模式,建造者模式)
- 单例模式
- 原型模式
结构型模式
重点(前端)
- 适配器模式
- 装饰器模式
- 代理模式
- 外观模式
较少(前端)
- 桥接模式
- 组合模式
- 享元模式
行为型-1
- 策略模式
- 模板方法模式
- 观察者模式
- 迭代器模式
- 职责链模式
- 命令模式
行为型-2
- 备忘录模式
- 状态模式
- 访问者模式
- 中介者模式
- 解释器模式
学习
- 明白每个设计的道理和用意
- 通过经典应用体会它的真正使用场景
- 自己编码时多思考,尽量模仿(刻意训练)

浙公网安备 33010602011771号