如上图代码块,jumpToDoc函数的功能是根据传入的参数判断执行不同的逻辑,这样的话 就会有如下的代码:
function jumpToDoc(params) {
if(params === "demand") {
// 执行demand功能
} else if (params === "prototype") {
// 执行prototype功能
}
// ... ... 更多逻辑
}
这样会导致一个问题就是该函数会越来越臃肿,最终不易维护。
使用策略模式将逻辑分为策略类与环境类,策略类提供一系列策略算法,环境类对外外提供调用接口,根据不同的接口去调用不同的算法,这样我们在遇到新的type时就不必去修改主函数逻辑,而去维护策略类就好了。
这种方法可以避免多分支if语句,是优化代码的一种方法。当然策略类的数据结构也不一定得用Object,也可以用Array或者Map等。
最近正在读一本设计模式的书《JavaScript设计模式与开发实战》感觉写的很好墙裂推荐哈
网友评论