摘要:策略模式定义定义一系列的算法把他们一个个封装起来并且可以相互替换。根据上面定义可以推导出其实策略模式的目的就是将算法的使用和算法实现分离开来。所以一个基于策略模式的程序至少有两部分组成。
在程序设计中,要实现一个功能方案有多种,比如压缩文件程序,既可以选择zip压缩算法,也可以选择gzip算法。
上面这个应用场景中抽象出来其实就是策略模式。
策略模式定义:
定义一系列的算法,把他们一个个封装起来,并且可以相互替换。
根据上面定义可以推导出,其实策略模式的目的就是将算法的使用和算法实现分离开来。所以一个基于策略模式的程序至少有两部分组成。
第一部分其实是一组策略类,策略类封装了具体的算法。
第二部分是环境类(Context),Context接受用户的请求,随后把请求委托给某一个策略类。
应用场景 salary计算var strategies={ "S":function (salary) { return salary*4; }, "A":function (salary) { return salary*3; }, "B":function (salary) { return salary*5; } }; var calculateBonus=function (level,salary) { return strategies[level](salary); } console.log(calculateBonus("S",200)); //800 console.log(calculateBonus("A",100)); //300
上面如果我们不用策略模式实现,很可能我们的代码中就会充斥着ifelse这些代码。
form submit verify这个例子code稍微多些,做了个demo, 确定点我吗
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81799.html
摘要:可以使用其他模式来修正这个缺陷,如工厂方法模式代理模式或享元模式。我们的策略模式只是实现了策略的管理,但是没有严格地定义适当的场景使用适当的策略,在实际项目中,一般通过工厂方法模式来实现策略类的声明。源码地址参考文献设计模式之禅 定义 Define a family of algorithms,encapsulate each one,and make them interchange...
摘要:一定义定义维基百科策略模式作爲一種軟件設計模式,指對象有某個行爲,但是在不同的場景中,該行爲有不同的實現算法。二策略模式图我们看看策略模式是有怎样设计结构的。如中创建线程池,线程池任务满时,对提交的任务做处理就使用了策略模式。以前完整的看过《大话设计模式》,虽然完整看过,也做过笔记,但现在依然很多已经很模糊。这段时间趁着离职,有时间,打算重新过一遍,该篇将介绍策略模式。一、定义定义(维基百科...
摘要:孙膑心里一万个草泥马在奔腾,差点没噎死自己滚一边去,我们这盘跟他赛马开始,策略模式上场。在设计模式之禅中的提出通过策略枚举和反射机制对策略模式进行改良,膜拜了但是要添加或淘汰策略,还是得去对枚举进行修改,也不符合开闭原则。 今天给大家说说田忌赛马的故事。如有雷同,纯属巧合!话说在战国时期,群雄割据,硝烟四起,茶余饭后还是少不了娱乐活动的,其中赛马是最火爆的。一天,孙膑看到田忌像个死鸡似...
阅读 2991·2023-04-25 20:43
阅读 1701·2021-09-30 09:54
阅读 1569·2021-09-24 09:47
阅读 2858·2021-09-06 15:02
阅读 3484·2021-02-22 17:09
阅读 1205·2019-08-30 15:53
阅读 1421·2019-08-29 17:04
阅读 1919·2019-08-28 18:22