一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第11天,点击查看活动详情。
1、前言
接下来有个项目,将会写大量的if-else
,为了让代码更美观,增强可维护性,就百度找解决方案。了解到策略模式能解决这个问题。今天就来了解一下策略模式。
2、策略模式是什么?
菜鸟网站给的概念是:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。晦涩难懂。简而言之就是,完成一件事情有多种方案,每一种方案都是一个策略,这些方案可以互相替换。把这些方案封装起来就是策略模式。
3、实例
以项目中为例,系统是医疗指标展示功能,其中有门诊人次、急诊人次、手术占比、四级手术占比、平均在院人次实时趋势图等等,其中门诊人次、急诊人次是一个显示效果,手术占比、四级手术占比是同一个显示效果,平均在院人次又是一个展示效果。5个指标3个展示效果。 那么是不是可以考虑把3种渲染方案封装起来,根据指标的不同来调阅不同的方案呢? 以往的写法,是这样的:
if(门诊人次 || 急诊人次){
show(效果A);
}else if(手术占比 || 四级手术占比){
show(效果B);
}else{//平均在院人次实时趋势图
show(效果C);
}
如果再有其他指标,则继续增加if-else
。
可以看到,这里运用了三种策略。
如果按照策略模式的写法,如下:
var strategy = {
showA : function(){
show(效果A);
},
showB : function(){
show(效果B);
},
showC : function(){
show(效果C);
}
}
var execute = function (show) {
cutOver[show]();
};