JS设计模式之策略模式怎么用
小编给大家分享一下JS设计模式之策略模式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
策略模式的概念引用:
在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。
如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择。
这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。
在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。如果我们将这些策略包含在客户端,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重.
举例说明:
一、出行旅游:我们可以有几个策略可以考虑:可以骑自行车,汽车,做火车,飞机。每个策略都可以得到相同的结果,但是它们使用了不同的资源。
选择策略的依据是费用,时间,使用工具还有每种方式的方便程度 。
二、在一个购物商城,在五一做了一个活动,所以图书类商品根据购买的金额做出以下折扣策略
1、购买满199元,打9折
2、购买满399元,打8折
3、购买满599元以上,打7折;
function BookStrategy() {
this.calcPrice = function( price ) {
console.log("未打折 = " + price);
}
}
function BookCalc9Strategy() {
this.calcPrice = function( price ) {
console.log("原价是:"+ price +";打9折后:" + (price * 0.9));
}
}
function BookCalc8Strategy() {
this.calcPrice = function( price ) {
console.log("原价是:"+ price +";打8折后:" + (price * 0.8));
}
}
function BookCalc7Strategy() {
this.calcPrice = function( price ) {
console.log("原价是:"+ price +";打7折后:" + (price * 0.7));
}
}
function PriceCalc( _strategy ) {
this.strategy = _strategy;
this.getPrice = function( price ) {
return this.strategy.calcPrice( price );
}
}
function Client() {
var price = 100;
var priceCalc = null;
if ( 199 <= price && price < 399 ) {
priceCalc = new PriceCalc(new BookCalc9Strategy());
} else if ( 399 <= price && price < 599 ) {
priceCalc = new PriceCalc(new BookCalc8Strategy());
} else if ( 599 <= price ) {
priceCalc = new PriceCalc(new BookCalc7Strategy());
} else {
priceCalc = new PriceCalc(new BookStrategy());
}
priceCalc.getPrice(price);
}
Client();
运行结果:
以上是“JS设计模式之策略模式怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341