未加星标

JS设计模式之策略模式概念与用法分析

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二05 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

本文实例讲述了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设计模式之策略模式概念与用法分析

更多关于javascript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


您可能感兴趣的文章:JavaScript设计模式之观察者模式(发布者-订阅者模式)Javascript设计模式之观察者模式的多个实现版本实例Javascript设计模式之观察者模式(推荐)学习JavaScript设计模式之观察者模式JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解JS设计模式之状态模式概念与用法分析JS设计模式之访问者模式定义与用法分析JavaScript设计模式之调停者模式实例详解JS设计模式之责任链模式实例详解JavaScript 设计模式 安全沙箱模式JS设计模式之观察者模式实现实时改变页面中金额数的方法

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

tags: price,JavaScript,模式,function,算法,new,priceCalc,查找,设计,calcPrice,lt,PriceCalc,观察者
分页:12
转载请注明
本文标题:JS设计模式之策略模式概念与用法分析
本站链接:https://www.codesec.net/view/572159.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(71)