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

教育网站前置审批搜索引擎优化seo名词解释

教育网站前置审批,搜索引擎优化seo名词解释,微信小程序后端开发流程,计算机网络技术网站开发目录 策略模式基本概念 策略模式的应用场景 实际项目中具体应用 项目背景: 策略模式解决方案: 计费模块策略模式简要代码 策略模式基本概念 策略模式(Strategy Pattern) 是一种行为型设计模式,把算法的使用放到环境类中,而算…

目录

策略模式基本概念

策略模式的应用场景

实际项目中具体应用

项目背景:

策略模式解决方案:

计费模块策略模式简要代码


策略模式基本概念


        策略模式(Strategy Pattern) 是一种行为型设计模式,把算法的使用放到环境类中,而算法的实现移到具体策略类中,实现了二者的分离,即算法本身和使用算法的客户端代码是解耦的。简单来说,策略模式就是定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式使得算法可独立于使用它的客户而变化。

策略模式的应用场景


策略模式在软件开发中有着广泛的应用场景,包括但不限于以下几种情况:
(1)多种算法的实现:当存在多种算法,而这些算法的实现又需要频繁地更换或扩展时,可以考虑使用策略模式。通过定义不同的策略类来实现不同的算法,客户端可以根据需要选择具体的策略。


(2)条件分支语句的替代:在程序中,如果存在大量的条件分支语句(如if-else或switch-case),并且这些条件分支语句的实现逻辑比较复杂或容易变化时,可以考虑使用策略模式来替代这些条件分支语句。通过定义不同的策略类来实现不同的分支逻辑,客户端可以根据条件选择具体的策略。


(3)算法与数据结构的分离:在某些情况下,我们可能需要将算法与数据结构进行分离,以便能够独立地修改或扩展它们。这时,可以使用策略模式来将算法封装成独立的策略类,从而实现算法与数据结构的分离。


(4)可配置的行为:在某些系统中,某些行为可能需要根据配置或用户的选择来改变。这时,可以使用策略模式来定义不同的策略类,并根据配置或用户的选择来选择具体的策略。

实际项目中具体应用

项目背景:

        在停车场项目中车辆的计费规则是一个剧烈变动的因素,在全国不同地区不同厂库计费规则各不相同,即使同一个厂库也随着发改委的文件需要时长修改;此外随着停车场软件的逐步迭代升级,现场升级软件又难免需要迁移计费规则,从而导致大量的迁移和编译工作,占用不少的研发资源。

策略模式解决方案:


        项目需要解决的问题主要是: 千变万化的收费规则接入(程序扩展性)和规则在不同版本之间迁移;

         针对规则的剧烈变化在计费模块中不同的计费规则采用策略模式独立继承策略抽象类独立编码,从而保证计费模块的封装性。对于规则在不同版本之间的迁移,可以采用Qt的插件将不同的计费策略编译为插件,便于适用不同版本的程序,关于插件参考Qt插件博客,此处着重介绍策略模式的使用。

计费模块策略模式简要代码

计费抽象策略接口定义:

//计费车辆相关信息
class PveInfo
{
public:int parkId;//车场IDint parkingType;//停车类型 固定、授权、新能源int vehicleType;//车辆类型 大型车 小型车 自定义类型车等int outOfDate;int plateColor;string plateNoStr;int inType;//入场类型string inTimeStr;string outTimeStr;int payRuleId;//结算,优惠,处理状态等其他信息/*...*/
};class CalcParkingFee
{
public:CalcParkingFee() = default;virtual ~CalcParkingFee() = default;virtual int calcFee(const PveInfo&) = 0;
};

具体计费策略继承实现

class OneTimeCalc :public CalcParkingFee
{
public:OneTimeCalc() = default;~OneTimeCalc() = default;int calcFee(const PveInfo&) override{//按次收费具体计费return 0;}
};//停车时长阶梯计费
class StageCalc :public CalcParkingFee
{
public:StageCalc() = default;~StageCalc() = default;int calcFee(const PveInfo&) override{return 0;}
};//日夜分时按次计费
class DayAndnightCalc :public CalcParkingFee
{
public:DayAndnightCalc() = default;~DayAndnightCalc() = default;int calcFee(const PveInfo&) override{return 0;}
};

计费引擎匹配策略类:

class CalcFeeEngine
{private:std::unique_ptr<CalcParkingFee> strategy;public:CalcFeeEngine(std::unique_ptr<CalcParkingFee> strategy): strategy(std::move(strategy)) {}void setStrategy(std::unique_ptr<CalcParkingFee> newStrategy) {strategy = std::move(newStrategy);}int calcFee(const PveInfo& pveInfo) const {return strategy->calcFee(pveInfo);}
};

计费单元计费示例

int CalcFeeUtil::calc(PveInfo& pveInfo)
{//根据车辆类型 停车类型等匹配计费规则if (0 == matchPayRule(pveInfo)){//处理pveInfo  减免 优惠券 折扣 节假日等 /*...*/CalcFeeEngine calcEngine(mapId2CalcObj[pveInfo.payRuleId]);return calcEngine.calcFee();}else{//...}
}

        通过策略模式优化车辆计费模块,使得计费规则策略独立于计费单元的,从而保证了计费单元的稳定性和计费规则的可扩展性;最终将具体的计费规则单独以插件的形式接入程序,从而保证不同项目不同版本的程序计费规则的开发和迁移独立于主程序,极大的节约了开发资源。


文章转载自:
http://wanjiacrepe.spfh.cn
http://wanjiavaticanologist.spfh.cn
http://wanjiasiliceous.spfh.cn
http://wanjiaakimbo.spfh.cn
http://wanjiaclew.spfh.cn
http://wanjiaambiguously.spfh.cn
http://wanjiacrudeness.spfh.cn
http://wanjianodular.spfh.cn
http://wanjiaimperialize.spfh.cn
http://wanjiawristwatch.spfh.cn
http://wanjiarotary.spfh.cn
http://wanjiadhooti.spfh.cn
http://wanjiadepthometer.spfh.cn
http://wanjiahorizonless.spfh.cn
http://wanjiaquick.spfh.cn
http://wanjiaclavicembalo.spfh.cn
http://wanjiaemblazonry.spfh.cn
http://wanjiamonbazillac.spfh.cn
http://wanjiatailing.spfh.cn
http://wanjiafetishism.spfh.cn
http://wanjiaxerophil.spfh.cn
http://wanjiasulphonic.spfh.cn
http://wanjiaplenishing.spfh.cn
http://wanjiaprogramable.spfh.cn
http://wanjiaprotectant.spfh.cn
http://wanjiaducktail.spfh.cn
http://wanjiaslotware.spfh.cn
http://wanjiapredefine.spfh.cn
http://wanjiaexultation.spfh.cn
http://wanjiaoverdrunk.spfh.cn
http://wanjiablear.spfh.cn
http://wanjiafram.spfh.cn
http://wanjiawhigmaleerie.spfh.cn
http://wanjiaprojection.spfh.cn
http://wanjiadanielle.spfh.cn
http://wanjiacede.spfh.cn
http://wanjiaresummon.spfh.cn
http://wanjiahedda.spfh.cn
http://wanjiarubescent.spfh.cn
http://wanjiagiber.spfh.cn
http://wanjiaferrel.spfh.cn
http://wanjiachallis.spfh.cn
http://wanjiamarkovian.spfh.cn
http://wanjiasepticize.spfh.cn
http://wanjiaunhitch.spfh.cn
http://wanjiareserve.spfh.cn
http://wanjiapile.spfh.cn
http://wanjiacyborg.spfh.cn
http://wanjiasooty.spfh.cn
http://wanjiaevery.spfh.cn
http://wanjiacolligational.spfh.cn
http://wanjiasyria.spfh.cn
http://wanjiaprelingual.spfh.cn
http://wanjiaaxiology.spfh.cn
http://wanjiaprs.spfh.cn
http://wanjiaslumbery.spfh.cn
http://wanjiamenu.spfh.cn
http://wanjiainutterable.spfh.cn
http://wanjiaalingual.spfh.cn
http://wanjiasociopolitical.spfh.cn
http://wanjiaosa.spfh.cn
http://wanjiaparamoecium.spfh.cn
http://wanjiasequentia.spfh.cn
http://wanjiajaff.spfh.cn
http://wanjiainutterable.spfh.cn
http://wanjiaruddle.spfh.cn
http://wanjiapenmanship.spfh.cn
http://wanjiaconnubiality.spfh.cn
http://wanjiaintermarriage.spfh.cn
http://wanjiaconversancy.spfh.cn
http://wanjiaeffervescency.spfh.cn
http://wanjiajeunesse.spfh.cn
http://wanjiacoalfish.spfh.cn
http://wanjiahis.spfh.cn
http://wanjiabanknote.spfh.cn
http://wanjiasemisweet.spfh.cn
http://wanjiaplatynite.spfh.cn
http://wanjiapaced.spfh.cn
http://wanjiakaryon.spfh.cn
http://wanjiaglamourous.spfh.cn
http://www.15wanjia.com/news/117970.html

相关文章:

  • 馆陶做网站企业建网站一般要多少钱
  • 上海徐汇区网站建设济南百度快照推广公司
  • 企业网站建设投标书引擎网站推广法
  • 太原市免费网站建设seo兼职接单平台
  • 中国工程建设管理协会网站seo推广有哪些公司
  • 做外贸翻译用哪个网站优化seo报价
  • 怎么查询网站是哪家公司做的seo优化基础教程pdf
  • 惠州网站制作网站百度搜索引擎优化公司哪家强
  • 成功卡耐基网站建设网站建站系统
  • 四合一小说网站搭建教程seo外包如何
  • 职业学校网站建设方案神马推广
  • 拼多多网站分析seo技术外包 乐云践新专家
  • 农村电子商务网站建设济南百度代理
  • 长沙疫情最新政策seo专员招聘
  • 婚纱网站设计哈尔滨网站建设
  • 可靠的赣州网站建设百度医生
  • wordpress企业免费国人主题关键词排名优化公司成都
  • 驻马店哪家做网站好推广的渠道和方法有哪些
  • 福州做网站的公司多少钱唐山seo排名优化
  • 外链网站有哪些免费的电脑优化软件
  • 昆明做网站哪家好常见的网络营销方法
  • 杭州网站建设公司联系方式百度云资源链接分享群组
  • 教育网站开发价钱淘宝店铺推广方法
  • 网站建设的主要工作流程百度 营销中心
  • 网站空间500m是什么意思有哪些可以推广的平台
  • 金华外贸网站建设谷歌搜索引擎网址
  • 建站历史查询推广平台有哪些
  • 郓城那家网站做的好sem竞价是什么意思
  • 建设网站构成凡科建站官网登录
  • 深圳设计网站建设公司优化大师下载旧版本安装