zoukankan      html  css  js  c++  java
  • 使用JavaScript浅谈策略模式

    什么是策略模式?

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

    没错定义就是这么简单。

    下面我们来看一个例子:

    function getLevel(level) {
        if (level === 'A') {
            console.log('大师');
        }
        else if (level === 'B') {
            console.log('专家');
        }
        else if (level === 'C') {
            console.log('菜鸡');
        }
    }
    getLevel('C');

    我们给出了一个获取自己编程等级的函数,一看没有什么,很正常,但是我们增加新的等级的时候就只有在函数里面一个一个去增加了,而且又增加了许多if else条件判断语句。这样子很不好,下面我们用策略模式改造一下:

    var obj = {
        "A": function(){console.log('大师')},
        "B": function(){console.log('专家')},
        "C": function(){console.log('菜鸡')},
    }
    function getLevel(level) {
        obj[level]();
    }
    getLevel('C');

    好了我们现在已经修改好了,我们看看是不是符合策略模式的定义,没错符合,这个就是策略模式在JavaScript中的一个简单实现。

    我们首先定义了一系列算法,然后把他们统一封装起来了,然后我们的目的就是获取自己的编程等级,我们只需要传入相应的参数,就能获取到对应的等级。

    看到这里,我想有一句歌词能表达你内心的想法,“小朋友,你是不是有很多问好?”。

    这算个毛的设计模式啊,我们平常都在使用啊!没错设计模式并不是很高级的东西,说不定你的代码中存在着大量的设计模式。

    这个例子可能体会不出策略模式的精髓,但用来入门够了,具体怎么使用只要靠自己的经验积累。

  • 相关阅读:
    emacs 编程入门 函数
    boost库介绍
    jquery css attr
    html 相对定位 绝对 定位 css + div
    我常用的grep
    我常用的tar
    C#皮肤的用法(皮肤资源+使用实例下载)
    C#资源文件操作示例 创建资源和读取资源
    黄聪:c#中高效的excel导入sqlserver的方法
    黄聪:Delphi 中的 XMLDocument 类详解(2) 记要
  • 原文地址:https://www.cnblogs.com/jsydb/p/12527587.html
Copyright © 2011-2022 走看看