JavaScript设计模式

设计模式是解决某个特定场景下对某种问题的解决方案

下面介绍学习几个常见的js设计模式

1、单例模式

单例模式:顾名思义就是一个类只能生成一个实例,并提供一个访问它的全局访问点。实现的方法为先判断实例存在与否,如果存在则直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。

适用场景:一个单一对象。比如:弹窗,无论点击多少次,弹窗只应该被创建一次。

    class CreatName{
        constructor(name){
            this.name=name;
            this.getName()
        }
        getName(){
            return this.name
        }
    }
    //代理实现单例模式,通过闭包和自执行函数实现判断
    var ProxyMode=(function () {
        var instance=null;
        return function (name) {
            if(!instance){
                instance=new CreatName(name)
            }
            return instance
        }
    })()
    var a=new ProxyMode('aaa')
    var b=new ProxyMode('bbb')
    // 因为是单例所以两次实例化本质上是一样的,下面也是绝对相等的
    console.log(a===b) //true

2、 策略模式

策略模式:定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换。

一个基于策略模式的程序至少由两部分组成。第一个部分是一组策略类(可变),策略类封装了具体的算法,并负责具体的计算过程。第二个部分是环境类Context(不变),Context接受客户的请求,随后将请求委托给某一个策略类。要做到这一点,说明Context中要维持对某个策略对象的引用。
// 策略类,提供具体算法
    var levelOBJ={
        'A':function (n) {
            return n*2
        },
        'B':function (n) {
            return n*3
        },
        'C':function (n) {
            return n*4
        },
    }
    // 环境类,会委托给某一个策略类
     var getNum=function (level,n) {
         return levelOBJ[level](n)
     }
     console.log(getNum('A',2)) //4

 未完待续

原文地址:https://www.cnblogs.com/yuanzhiguo/p/11322379.html