前言
什么是策略模式:定义一系列的策略,把它们一个个封装成函数,也可以统一封装进一个对象;然后再定义一个方法,该方法可根据参数自动选择执行对应的策略。
一、策略模式
示例:废话不多说直接上代码
//定义策略
let Strategy={
"Add":function(a,b,msg){
console.log(`${msg}:${a+b}`);
},
"Subtraction":function(a,b,msg){
console.log(`${msg}:${a-b}`)
},
"multiplication":function(a,b,msg){
console.log(`${msg}:${a*b}`)
},
"division":function(a,b,msg){
console.log(`${msg}:${a/b}`);
}
};
//new实例时传参初始化数据
function StrategyDemo(a,b){
this.Num=a;
this.Numb=b;
}
//在StrategyDemo原型挂上Compute方法
StrategyDemo.prototype.Compute=function(method,msg){
//判断是否存在此策略
if(typeof Strategy[method]==="function"){
Strategy[method](this.Num,this.Numb,msg);
return;
}
console.log(`不存在${method}策略`);
}
let StrategyInstance=new StrategyDemo(50,20.5);
StrategyInstance.Compute("Add","加法");
StrategyInstance.Compute("Subtraction","减法");
StrategyInstance.Compute("multiplication","乘法");
StrategyInstance.Compute("division","除法");
StrategyInstance.Compute("demo","测试");
接下来咱们来看看结果:
总结
如何?是不是很简单呐~嘻嘻
咱们下次见哟~