设计模式

149 阅读1分钟

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、适配器模式:适配器用来解决两个接口不兼容的情况,不需要改变已有的接口,通过包装一层的方式实现两个接口的正常协作。