下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第JavaScript设计模式策略模式案例分享前言
策略设计模式就是指一个问题匹配多个解决方法,不一定要用到哪一个,而且有可能随时增加多个方案
比如我们去买书,书店都会搞一些优惠活动,满100减20,满200减50,八折优惠这些,但是优惠活动源源不止这些,后期会陆续添加优惠活动,比如双11活动打七折,等到双11活动过去之后打七折活动还需要取消
我们先不用策略设计模式进行实现计算折扣后价格,我们声明一个方法,里面接受俩个参数,这俩个参数一个是价格一个是折扣种类,然后在方法里面使用if语句判断折扣种类计算价格,如果没有折扣就是原价,最后把计算过的折扣价格返回出去
//price价格
//type折扣种类
functioncalcPrice(price,type){
if(type=='100_20'){
price-=20
}elseif(type=='200_50'){
price-=50
returnprice;
//使用
constbookPrice=calcPrice(300,'100_20')
这种方式如果是折扣活动比较少的情况下还行,但是每次添加新的折扣活动都需要去往方法里面添加折扣活动的if语句判断以及记住新折扣种类的字段以免和之前的折扣活动名字重复,对于折扣活动到期的情况还需要手动进行删除该if语句,长此以往代码不仅冗余还很维护
使用策略设计模式实现:
我们声明一个闭包函数,闭包函数中有一个折扣种类中心,里面有默认的几个折扣种类,还有一个计算折扣价格的方法,方法上我们又给他定义了俩个方法,一个是添加折扣种类方法,一个是删除折扣种类方法,然后在把计算折扣方法暴露出去就可以了
//计算折扣价格闭包函数
constcalcPrice=(function(){
//折扣种类中心
constsale={
//100-20折扣活动
'100_20':function(price){
returnprice-=20
//200-50折扣活动
'200_50':function(price){
returnprice-=50
//打八折折扣活动
'80%':function(price){
returnprice*=0.8
/***
*计算折扣价格
*price价格
*type折扣类型
***/
functiontotalPrice(price,type){
//判断折扣种类里面是否拥有这个折扣类型,如果有就执行,没有就返回原价
if(sale[type]){
//使用折扣函数
price=sale[type](price)
//返回价格
returnprice
*添加折扣方法
*type折扣类型
*callback折扣类型方法
***/
totalPrice.add=function(type,callback){
//判断折扣类型是否存在
if(sale[type])return'折扣已存在'
//给折扣类型中心添加折扣价格方法
sale[type]=callback
return'折扣方法添加成功'
//删除折扣方法
totalPrice.del(type){
//通过delete关键字删除折扣类型中心方法
deletesale[type]
//被return出去的函数,才是计算价格的本体
returntotalPrice
})();
//使用计算价格
constbookPrice=calcPrice(240,'200_50');
//添加打七折折扣类型方法
calcPrice.add('70%',function(price){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度广东环境保护工程职业学院妇产护理期末模拟试题带答案详解(突破训练)
- 企业资产完备无损承诺书(6篇)
- 文创产业品牌承诺书6篇
- 2024-2025学年公务员考试《常识》检测卷附答案详解【基础题】
- 闲置游戏活动策划方案(3篇)
- dcs接地施工方案(3篇)
- 2024-2025学年度烟草职业技能鉴定题库附答案详解【培优A卷】
- 仿古面砖-施工方案(3篇)
- 2024-2025学年度包头轻工职业技术学院单招数学考前冲刺练习题附参考答案详解(能力提升)
- 2026年闽南理工学院单招职业技能测试题库及答案详解(必刷)
- 汽轮机组试车方案
- 漆安慎力学第二版课后习题解答及漆安慎-力学答案
- PCI围术期强化他汀治疗的获益和机制课件
- 沥青搅拌站安全生产风险分级管控体系方案资料(2022-2023版)
- WTO海关估价协议中文版
- 【广东省】工作证明模板(仅供参考)
- YS/T 613-2006碳膜电位器用电阻浆料
- GB/T 33365-2016钢筋混凝土用钢筋焊接网试验方法
- GB/T 17626.10-2017电磁兼容试验和测量技术阻尼振荡磁场抗扰度试验
- GB/T 14536.6-2008家用和类似用途电自动控制器燃烧器电自动控制系统的特殊要求
- 《乡风文明建设》(王博文)
评论
0/150
提交评论