vue设计模式之策略模式 filters

策略模式(Strategy )是属于设计模式中 对象行为型模式, 主要是定义一系列的算法 , 把这些算法一个个封装成单独的类 .
实际应用:【替换if-else,switch】

普通if-else

var performanceS = function( salary ){
    //...
    return salary * 4;
};
var performanceA = function( salary ){
    //...
    return salary * 3;
};
var performanceB = function( salary ){
    //...
    return salary * 2;
};
var calculateBonus = function( performanceLevel, salary ){
    if ( performanceLevel === 'S' ){
        return performanceS( salary );
    }
    if ( performanceLevel === 'A' ){
        return performanceA( salary );
    }
    if ( performanceLevel === 'B' ){
        return performanceB( salary );
    }
};
calculateBonus( 'A' , 10000 ); // 输出:30000

js策略模式写法

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( 'A', 10000 ) ); // 输出:30000

vue写法:

# template部分
<template>
  <div>{{ salary | calculateBonus }}<div> <!-- 一个参数 -->
  <div>{{ level  | calculateBonus(salary) }}<div> <!-- 2个参数 -->
</template>


//官网:https://cn.vuejs.org/v2/guide/filters.html

<!--
 1.filters 用在双花括号插值和 v-bind 表达式:
  <div>{{ salary | calculateBonus }}<div>
  <div v-bind:id="rawId | formatId"></div>
 -->

<!-- 2. filters 管道符‘|’ 前面的为第一个参数,多个参数的使用函数方式传入-->

<!-- 3. 多个filters依次执行
    message | filterA | filterB  
    # message 传入filterA;
    # filterA 结果 传入filterB
  -->

export default {
  name: "App",
  data(){
    return {
        level:'A',
        salary: 10000
    }
  },
  filters:{
    calculateBonus(level, salary) {
      const strategies = {
        "S": function( salary ){
              return salary * 4;
             },
        "A": function( salary ){
              return salary * 3;
             },
        "B": function( salary ){
              return salary * 2;
             }
       };
      return strategies[ level ]( salary );
    },
  }, 
  methods:{}
}

参考:JS设计模式 之 策略模式 - 雨中愚 - 博客园icon-default.png?t=M0H8https://www.cnblogs.com/yuzhongyu/p/14203862.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值