设计模式

单例模式

单例模式确保全局只有一个实例,其常用于全局缓存、全局状态管理等。主要实现方法是再构造函数上添加静态方法来实现只有一个实例。

// ES6
class Singleton {
    constructor() {
    }
}

// 立即执行函数
Singleton.create = (function () {
    let instance
    return function () {
        if (!instance) {
            instance = new Singleton()
        }
        return instance
    }
})()

const a = Singleton.create()
const b = Singleton.create()
console.log(a === b) // true

工厂模式

工厂起到的作用就是隐藏了创建实例的复杂度,只需要提供一个接口,简单清晰。用户并不关心复杂的代码,只需要你提供给我一个接口去调用,用户只负责传递需要的参数,至于这些参数怎么使用,内部有什么逻辑是不关心的,只需要你最后返回我一个实例。这个构造过程就是工厂。注意,工厂模式也是调用构造函数的静态方法。

适配器模式

适配器用来解决两个接口不兼容的情况,不需要改变已有的接口,通过包装一层的方式实现两个接口的正常协作。

代理模式

代理是为了控制对对象的访问,不让外部直接访问到对象。例如说事件代理就用到了代理模式。

发布-订阅模式

通过一对一或者一对多的依赖关系,当对象发生改变时,订阅方都会收到通知。比如我们点击一个按钮触发了点击事件就是使用了该模式,VUE的响应式也是使用了发布-订阅模式。

外观模式

外观模式提供了一个接口,隐藏了内部的逻辑,更加方便外部调用。

如果你对内容有任何疑问,欢迎提交 ❕issues✉️ email

最后更新于

这有帮助吗?