设计模式:针对软件设计过程中特定问题的简单优雅的解决方案1.SingletonMode单例模式的定义:保证一个类只有一个实例,并提供一个全局访问它的访问点。实现方式是先判断实例是否存在,存在则直接返回,不存在则创建然后返回,保证了一个类只有一个实例对象。适用场景:实现单个对象,比如弹窗,无论创建多少次,都应该只有一个实例对象。classModal{constructor(title,content){this.title=title;this.content=内容;}}constgetModal=(function(){letinstance=null;returnfunction(){if(!instance){instance=newModal('title','textcontent');}returninstance;}})();leta=getModal();letb=getModal();console.log(a===b);//真2。策略模式策略模式的目的是将算法的实现和算法的实现分开。策略模式至少由两部分组成:1.策略类:策略类封装了具体的算法,负责具体的计算过程,是可变的;2、环境类:环境类接受客户端的请求,然后将请求委托给某个策略类,不可变;/*策略类*/varlevelOBJ={"A":function(money){returnmoney*4;},"B":function(money){返还金钱*3;},"C":function(money){返还金钱*2;}};/*环境类*/varcalculateBouns=function(level,money){returnlevelOBJ[level](money);};console.log(calculateBouns('A',10000));//400003.代理模式代理模式的定义:为一个对象提供一个替代品或占位符来控制对它的访问。图片延迟加载是一个典型的有用场景:document.body.appendChild(imgNode);imgNode.src='./fake.png';returnimgNode;}LazyImg.prototype.setImg=function(src){varimgNode=this.getImg();varimg=新图像();img.onload=function(){imgNode.src=this.src;}img.src=src;}varpic=newLazyImg();cx.setImg('./rel.png');4.中介者模式中介者模式的定义:通过中介所有其他相关对象通过中介对象进行通信,而不是相互引用。当其中一个对象发生变化时,只需要通知中间对象。对象之间的紧耦合关系可以通过中介模式来解除。现实生活中,航线上的飞机只需要与机场塔台通信,即可确定航线和飞行状态,而不需要与所有飞机通信。同时,作为中介,塔台知道每架飞机的飞行状态,因此可以安排所有飞机的起降和航线安排。5.装饰器模式装饰器模式的定义:在不改变对象本身的基础上,在程序运行过程中动态地为对象添加方法。
