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

珠海网站建设及优化上海知名的seo推广咨询

珠海网站建设及优化,上海知名的seo推广咨询,深圳做seo有哪些公司,精品网站建设费用 真好磐石网络一、为什么需要策略模式? 作为前端程序员,我们经常会遇到这样的场景,例如 进入一个营销活动页面,会根据后端下发的不同 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.hrbkazy.com/news/52236.html

相关文章:

  • html做分模块的网站惠州seo推广公司
  • 有关网站开发的文献网络推广合同
  • 怎么做阿里巴巴国际网站首页世界杯积分榜排名
  • 南宁网站关键字优化模板建站公司
  • 做网站seo怎么赚钱铜川网站seo
  • dw可以做视频网站么软文营销文章300字
  • 做书app下载网站有哪些市场推广方案ppt
  • 网店美工设计的四大要点郑州本地seo顾问
  • 用网站做简历建站平台哪家好
  • 怎么做css网站正规微商免费推广软件
  • 网站建设及推广话术济南优化哪家好
  • 广州网络推广建站磁力天堂
  • 国内设计师交流网站世界搜索引擎大全
  • 肇庆企业建站模板友链是什么
  • 兰州百度网站建设优化网站链接的方法
  • 网站建设详细报价单如何做推广和引流
  • 阿里云模板建站教程网络推广深圳有效渠道
  • 个人主页界面网站石家庄seo关键词排名
  • 美食网站是怎么做的seo查询外链
  • 广州网站建设性价比网店营销策划方案ppt
  • 手机做直播官方网站网络营销创意案例
  • 制作一个WordPress主题如何进行搜索引擎优化?
  • wordpress iis内存高西安网站建设优化
  • 400电话网站源码seo自学教程推荐
  • 上海嘉定网站建设网站软文推广网站
  • wordpress点击放大图片西安seo优化排名
  • 红酒营销型网站建设网站开发软件有哪些
  • 做照片书网站好宁波seo关键词优化报价
  • 房地产做网站怎样吸引客户大连最好的做网站的公司
  • 日本做的视频网站有哪些站长是什么职位