• 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

     未完待续

  • 相关阅读:
    jsp内置对象
    Response响应
    中医不传之秘
    slam-四元运动学
    ubuntu 16.04 设置 win+e 快捷键打开文件夹管理器
    ubuntu16.04 更新nvidia 显卡驱动后显示 clean ... files ... blocks ... /sys/class/backlight/nvidia_0/actural_brightness
    android studio 引入模块失败解决方法
    gradle
    python logger
    ubuntu自定义终端风格
  • 原文地址:https://www.cnblogs.com/yuanzhiguo/p/11322379.html
Copyright © 2020-2023  润新知