Skip to content
On this page

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
沪ICP备20006251号-1