当前位置: 首页 > news >正文

男人和女人做哪个网站网站客户端制作多少钱

男人和女人做哪个网站,网站客户端制作多少钱,家装设计平台,安徽网站建设网站运营一、为什么需要策略模式? 作为前端程序员,我们经常会遇到这样的场景,例如 进入一个营销活动页面,会根据后端下发的不同 type ,前端页面展示不同的弹窗。 async getMainData() {try {const res await activityQuery()…

一、为什么需要策略模式?

        作为前端程序员,我们经常会遇到这样的场景,例如

        进入一个营销活动页面,会根据后端下发的不同 type ,前端页面展示不同的弹窗。

async getMainData() {try {const res = await activityQuery(); // 请求后端数据this.styleType = res.styleType;if (this.styleType === STYLE_TYPE.Reward) {this.openMoneyPop();}else if (this.styleType === STYLE_TYPE.Waitreward) {this.openShareMoneyPop();} else if (this.styleType === STYLE_TYPE.Poster) {this.openPosterPop();} else if (this.styleType === STYLE_TYPE.Activity) {this.openActivityPop();} else if (this.styleType === STYLE_TYPE.Balance) {this.openBalancePop();} else if (this?.styleType === STYLE_TYPE.Cash) {this.openCashBalancePop();}} catch (error) {log.error(MODULENAME, '主接口异常', JSON.stringify(error));}
}

        我们在写的时候也许不觉得,但是当我们去维护别人的代码时,这个代码的话看了就想打人,未来新增一种弹窗类型的话,我们需要到 getMainData 内部去补一个 else if,一不小心可能就会影响到原有的逻辑,并且随着迭代函数会越来越大。但其实每种弹窗是相互独立的,我们并不关心其他弹窗的逻辑。

        此时,就需要策略模式了。

二、策略模式是什么?

        1.定义:策略模式作为一种软件设计模式 (opens new window),指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。

策略模式:

  • 定义了一族算法(业务规则);
  • 封装了每个算法;
  • 这族的算法可互换代替(interchangeable)

        2.运用:借助策略模式的思想,我们可以尝试这样写:

const strategies = {FirstStrategy() {console.log("Called FirstStrategy");},SecondStrategy() {console.log("Called SecondStrategy");},ThirdStrategy() {console.log("Called ThirdStrategy");}
}const execute = (strategy) => {return strategies[strategy]();
}execute('FirstStrategy')
execute('SecondStrategy')
execute('ThirdStrategy')

        将不同的处理逻辑都放到strategies这个对象里面去统一维护,然后通过给execute()这个方法传递不同的strategy参数,然后通过统一的strategies[strategy]()去根据参数匹配不同的处理逻辑。

三、提炼优化

        当我们要处理的情况较多时,如果将所有的代码都写到一个文件中,看上去还是会有些臃肿,这个时候我们就要考虑是否可以将业务代码与逻辑处理代码分离开来,于是就有了进一步的优化,如下:

        1.我们可以将不同类型的处理逻辑代码全都拿到一个单独的文件当中,然后给出一个统一的函数去供业务使用:

const popTypes = {[STYLE_TYPE.Reward]: function() {...},[STYLE_TYPE.Waitreward]: function() {...},[STYLE_TYPE.Poster]: function() {...},[STYLE_TYPE.Activity]: function() {...},[STYLE_TYPE.Balance]: function() {...},[STYLE_TYPE.Cash]: function() {...},
}export function openPop(type){return popTypes[type]();
}

        2.在我们需要的文件当中引入上面的配置文件

import { openPop } from './popTypes';

        3.在拿到不同参数时再去根据参数,调用方法

async getMainData() {try {const res = await activityQuery(); // 请求后端数据openPop(res.styleType)} catch (error) {log.error(MODULENAME, '主接口异常', JSON.stringify(error));}
}

 现在,我们的代码是不是看上去就非常的清晰了呢?嘿嘿~~

http://www.yayakq.cn/news/840110/

相关文章:

  • 四川建设厅官方网站九大员通知购物网站建设 优帮云
  • 旅游网站制作方案wordpress 扫码付费
  • 上海工程建设执业资格注册中心网站WordPress标题换行显示
  • 厦门自助网站建设报价口碑营销公司
  • 网络营销推广公司网站有哪些搜索引擎营销sem包括
  • 深圳网站建设服务中心官网中国平安金融科技有限公司
  • 个人想做企业网站备案协同办公oa
  • 部门网站开发选择热门网站做推广的原因
  • 怎么样创建做零食山楂的网站gulf oil wordpress
  • 教程网站建设中山市网站建设公司
  • 小红书的网站建设深圳十大教育培训机构排名
  • 常用网站建设技术是什么意思数据可视化网站
  • 摄影师作品网站有哪些营销型网站页面布局
  • 做网站需要用到哪些开发软件电子书网站怎么做
  • 钓鱼网站怎么做防护教程seo网站内部优化
  • 部门网站建设管理经验交流材料开源cms管理系统
  • wordpress网站配置文件网站域名被黑
  • dede门户网站模板下载自己做的网站能被百度收录吗
  • 沈阳网站企业青岛简易付网络技术有限公司
  • 一个虚拟主机怎么做多个网站附近企业
  • 辽宁千山科技做网站怎么样政务网站开发
  • 胶南市城乡建设局网站怎么做网站二维码
  • 好网站开发公司广州建站快车
  • 海港区网站快排seo域名怎么建设网站
  • 网站建设制作设计惠州做外贸对学历要求高吗
  • 做ppt设计师哪个网站好百度搜索广告投放
  • 邢台网站建设邢台怎样用godaddy建设一个网站
  • 汕头专业网站建设流程混合式教学财务管理网站建设
  • 海南网站建设哪里好自动生成网站地图的工具
  • 谁家做电商商城网站便宜wifi客户管理系统管理