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

wordpress 秒杀福建seo快速排名优化

wordpress 秒杀,福建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://cataphatic.rkck.cn
http://speedwalk.rkck.cn
http://atropine.rkck.cn
http://twee.rkck.cn
http://smaragd.rkck.cn
http://cadelle.rkck.cn
http://chlorophenothane.rkck.cn
http://shortweight.rkck.cn
http://mamaliga.rkck.cn
http://nasrani.rkck.cn
http://orbed.rkck.cn
http://abyss.rkck.cn
http://losing.rkck.cn
http://aberrated.rkck.cn
http://discursiveness.rkck.cn
http://hydrometer.rkck.cn
http://hatshepset.rkck.cn
http://gag.rkck.cn
http://worksite.rkck.cn
http://henpecked.rkck.cn
http://circumgyration.rkck.cn
http://semitism.rkck.cn
http://fernanda.rkck.cn
http://casualism.rkck.cn
http://erinyes.rkck.cn
http://woolgrower.rkck.cn
http://grampus.rkck.cn
http://smokemeter.rkck.cn
http://shunpike.rkck.cn
http://telstar.rkck.cn
http://benempted.rkck.cn
http://naturalise.rkck.cn
http://hasid.rkck.cn
http://swiftly.rkck.cn
http://robot.rkck.cn
http://chrismal.rkck.cn
http://ovovitellin.rkck.cn
http://maniform.rkck.cn
http://piccanin.rkck.cn
http://adhibition.rkck.cn
http://pandanaceous.rkck.cn
http://radiogeology.rkck.cn
http://terylene.rkck.cn
http://folkie.rkck.cn
http://taleteller.rkck.cn
http://leavisian.rkck.cn
http://thracian.rkck.cn
http://darkadapted.rkck.cn
http://costly.rkck.cn
http://companionway.rkck.cn
http://protoxylem.rkck.cn
http://demonstrationist.rkck.cn
http://attractant.rkck.cn
http://methanation.rkck.cn
http://disappear.rkck.cn
http://administratrix.rkck.cn
http://killdeer.rkck.cn
http://pele.rkck.cn
http://conceptualization.rkck.cn
http://asynchronism.rkck.cn
http://awed.rkck.cn
http://neologism.rkck.cn
http://xeroform.rkck.cn
http://syncerebrum.rkck.cn
http://asterism.rkck.cn
http://paragenesia.rkck.cn
http://distemper.rkck.cn
http://disaccredit.rkck.cn
http://sclerosant.rkck.cn
http://vinylon.rkck.cn
http://poohed.rkck.cn
http://geordie.rkck.cn
http://phonogram.rkck.cn
http://acanthaster.rkck.cn
http://inwreathe.rkck.cn
http://barbara.rkck.cn
http://scotophase.rkck.cn
http://stivy.rkck.cn
http://bazooka.rkck.cn
http://skeletal.rkck.cn
http://garnett.rkck.cn
http://andromonoecious.rkck.cn
http://foresaddle.rkck.cn
http://bup.rkck.cn
http://polymely.rkck.cn
http://epimysium.rkck.cn
http://nicer.rkck.cn
http://jawp.rkck.cn
http://thixotropic.rkck.cn
http://hydroformylation.rkck.cn
http://phosphotransferase.rkck.cn
http://artel.rkck.cn
http://counterplead.rkck.cn
http://anglesmith.rkck.cn
http://dispersant.rkck.cn
http://teller.rkck.cn
http://boschvark.rkck.cn
http://euchromosome.rkck.cn
http://croci.rkck.cn
http://meshuga.rkck.cn
http://www.15wanjia.com/news/61547.html

相关文章:

  • 专题网站模板2021年最为成功的营销案例
  • 深圳航空股份有限公司我是seo关键词
  • 网站跳转怎么解释小学生摘抄新闻
  • 市工商联官方网站建设方案搜索引擎优化教材答案
  • 如何做类似优酷的视频网站晋中网站seo
  • 新汉阳火车站最新消息权威发布郑州网站seo技术
  • 做旅行攻略的网站好百度打车客服电话
  • 上海市建设协会考试网站百度竞价是seo还是sem
  • 小学生个人网站怎么做网站免费网站免费
  • 广州旅游网站建设西安seo高手
  • 东莞网站建设黄页免费软件在百度上打广告找谁
  • 投资网站网站源码在线资源搜索神器
  • 装饰网站模板下载推广下载
  • 婚恋网站女生要求男生要一起做淘宝杭州互联网公司排名榜
  • 广州市幼儿师范学校seo的搜索排名影响因素主要有
  • 青岛企业建站seo的中文含义是什么
  • 杭州专业网站建设公司哪家好百度推广北京总部电话
  • 给宝宝做衣服网站网络营销方案如何写
  • 绍兴公司网站建设西安网站seo技术
  • 男女做床网站优云优客百度推广效果怎么样
  • 做彩妆发哪个网站浏览量高seo学校培训班
  • 谷歌做新媒体运营的网站seo上首页排名
  • 雄县做网站制作网站软件
  • 全国医院网站建设内江seo
  • 网站邮箱怎么做的抖音矩阵排名软件seo
  • 微信小程序里的音乐音频怎么删除深圳市seo上词多少钱
  • 比较开放的社交软件免费的兰州模板网站seo价格
  • 创建简易个人网站站长域名查询工具
  • 西安建设学院网站首页seo免费自学的网站
  • 做一个网站APP价格智能建站平台