1、工厂模式:隐藏了创建实例的复杂度,只需要提供一个接口
同样的思路: 外观模式:提供了一个接口,隐藏了内部的逻辑,更加方便外部调用。
举个例子:实现一个兼容多种浏览器的添加事件方法
function addEvent(elm, evType, fn, useCapture) {
if (elm.addEventListener) {
elm.addEventListener(evType, fn, useCapture)
return true
} else if (elm.attachEvent) {
var r = elm.attachEvent("on" + evType, fn)
return r
} else {
elm["on" + evType] = fn
}
}
2、代理模式:举例:事件委托
3、发布-订阅模式:比如:vue双向绑定:data中数据发生改变,发布消息,订阅中心通知订阅者去执行更新函数
4、单例模式:全局状态管理等等这些只需要一个对象,就可以使用单例模式:核心就是保证全局只有一个对象可以访问
实现:只需要用一个变量确保实例只创建一次就行
5、装饰模式
function readonly(target, key, descriptor) {
descriptor.writable = false
return descriptor
}
class Test {
@readonly
name = 'yck'
}
let t = new Test()
t.yck = '111' // 不可修改
6、适配器模式:适配器用来解决两个接口不兼容的情况,不需要改变已有的接口,通过包装一层的方式实现两个接口的正常协作。