• Javascript设计模式学习笔记


    一、单例模式

      定义:保证只有一个类仅有一个实例,并提供一个访问它的全局访问点

      线程池、全局缓存、浏览器中的windows对象 

    var getSingle = function (fn) {
      var result;
      return function () {
        return result || (result = fn.apply(this, argumnets))
      }      
    }    
    

      

    二、策略模式

      定义:定义一些列的算法,把它们一个个封装起来,并且使它们可以相互替换

    var strategies = {
      "S": function (salary) {
          return salary * 4      
      },
      "A": function (salary) {
          return salary * 3      
      },
      "B": function (salary) {
          return salary * 2
      }
    }
    
    var calculateBonus = function (level, salary) {
      return strategies[level][salary]
    }
    
    console.log(calculateBonus("S", 20000))
    console.log(calculateBonus("A", 10000))
    

      

    三、代理模式

      定义:为一个对象提供一个代用品或占位符,以便控制对他的访问

      保护代理:代理B帮助代理A过滤掉一些请求

      虚拟代理:把一些开销很大的对象,延迟到真正需要它的时候再去创建

    四、迭代器模式

      定义:提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示

      实现内部迭代器:

    var each = function (ary, vallback) {
      for(var i = 0; i < ary.length; i++) {
        callback.call(ary[i], i, ary); // 把下标和元素当作参数传给callback函数
      }  
    }    
    
    each([1, 2, 3], function (i, n) {
       console.log(i, n) 
    })
    

      

    五、发布-订阅模式(观察者模式)

      定义:对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将收到通知。js中一般用事件模型来替代传统的发布订阅模式

    六、命令模式

    七、组合模式

  • 相关阅读:
    Linux面试题大全
    数据库学习002
    数据学习001
    003
    002
    001
    金蝶清空日志数据库脚本
    表格批量导入金蝶专业版销售订单
    金蝶单据清空记账标志
    金蝶单据字段审核后可修改
  • 原文地址:https://www.cnblogs.com/huangfeihong/p/16050511.html
Copyright © 2020-2023  润新知