设计模式
2019-12-12 本文已影响0人
我的钱包瘪瘪的
设计模式
1. 工具
UML类图(统一建模语言)
-
类图是UML图中的一种, 推荐
Processon
, 在线建模工具 -
类图关系: 设计模式中主要用到
泛化(继承)
和关联(引用)
-
UML类图说明: 三行结构
类图结构说明.jpg
- 例子
// 类, 相对于如下的, UML类图 // JS中没有protected/private, 故而UML类图更多是`+` class People { constructor(name, house) { this.name = name this.house = house } saySomething () {} } // A, B是泛化(继承) class A extends People { constructor(name) { super(name) } saySomething () { console.log('I am A') } } class B extends People { constructor(name) { super(name) } saySomething () { console.log('I am B') } } // House是关联关系 class House { constructor(city) { this.city = city } showCity() { } } }
uml关联图.jpg
2. 五大设计原则(SOLID)
-
概念:
S - 单一职责原则: 一个程序只做一件事 O - 开放封闭原则: 对拓展开放, 对修改封闭(支持拓展, 不支持修改源代码影响原有功能) L - 李氏置换原则: 子类能覆盖父类, 父类能出现的地方子类就能出现(React.component), js较少 I - 接口独立原则: 保持接口单一独立, 避免出现"胖接口"(java等语言实现接口, js较少) D - 依赖导致原则: 依赖抽象而不依赖具体(js较少)
-
Promise示例
const loadImg(src) { return new Promise((resolve, reject) => { let img = document.createElement('img') img.onload = () => { resolve(img) } img.onerror = () => { reject('图片加载失败') } img.src = src }) } let src = `www.baodu.com` let result = loadImg(src) // 单一原则, 每个then只做一件事 // 开放封闭原则, 不修改原有的, 当需要拓展时, 直接再then即可 result.then(img => { console.log(`width: ${img.width}`) return img }).then(img => { // .... }).catch(err => { console.log(err) })
3. 23种设计模式
-
概括
创建型: 工厂模式 (工厂方法模式, 抽象工厂模式, 建造者模式), 单例模式 原型模式 组合型 适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 亨元模式 行为型 观察者模式 迭代器模式 策略模式 模板方法模式 职责连模式 命令模式 备忘录模式 状态模式 访问者模式 中介者模式 解释权模式