Appearance
SOLID 五大设计原则
S - 单一职责原则
- 一个程序只做好一件事
- 如果功能过于复杂就拆分开,每个部分持独立
O - 开放封闭原则
- 对扩展开放,对修改封闭
- 增加需求时,扩展新代码,而非修改已有代码
- 这是软件设计的终极目标
L - 李氏置换原则
- 子类能覆盖父类
- 父类能出现的地方子类就能出现
- JS 中使用较少(弱类型 &继承使用较少)
I - 接口独立原则
- 保持接口的单一独立,避免出现“胖接口”
- JS 中没有接口 (typescript 例外),使用较少
- 类似于单一职责原则,这里更关注接口
D - 依赖导致原则
- 面向接口编程,依赖于抽象而不依赖于具体
- 使用方只关注接口而不关注具体类的实现
- JS 中使用较少(没有接口&弱类型)
总结
- SO 体现较多,详细介绍
- LID 体现较少,但是要了解其用意
用 Promise 来说明 SO
- 单一职责原则:每个 then 中的逻辑只做好一件事
- 开放封闭原则:如果新增需求,扩展 then
- 对扩展开放、对修改封闭
javascript
function loadImg(src) {
let promise = new Promise( function (resolve, reject) {
let img = document.createElement('img')
img.onLoad: function (){
resolve(img)
}
img.onerror = function () {
reject('图片加载失败)
}
img.src = src
return promise
})
}
let src = 'http://img2.xxx.com'
let result = loadImg(src)
result.then(function(img){
alert(`width:${img.width}`)
}).then(function(img){
alert(`width:${img.height}`)
}).catch(function(ex)=>{
alert(ex)
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23