设计模式是解决某个特定场景下对某种问题的解决方案
下面介绍学习几个常见的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
未完待续