• 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

     未完待续

  • 相关阅读:
    缺少动态连接库.so--cannot open shared object file: No such file or directory
    BST删除节点
    python中列表字典和字符串的相互转化
    浅谈WM算法
    MySql--主从复制
    python中的__getattr__(self, name)浅谈
    Linux下python路径查找不到的解决办法
    Python闭包和装饰器
    Python操作Mysql数据库
    MySQL----联结
  • 原文地址:https://www.cnblogs.com/yuanzhiguo/p/11322379.html
Copyright © 2020-2023  润新知