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

网站投入费用中国建筑人才招聘

网站投入费用,中国建筑人才招聘,做暧暖的免费网站,图片制作器软件目录 策略模式引例动机 Motivation模式定义结构要点总结 策略模式 引例 税务计算系统,根据各个国家的税法,进行税务计算。各个国家税法规定差别很大,需对应进行相应的实现。 常规解耦前写法 使用if-else语句或switch-case语句进行结构化分…

目录

  • 策略模式
    • 引例
    • 动机 Motivation
    • 模式定义
    • 结构
    • 要点总结

策略模式

引例

税务计算系统,根据各个国家的税法,进行税务计算。各个国家税法规定差别很大,需对应进行相应的实现。

  • 常规解耦前写法
    使用if-else语句或switch-case语句进行结构化分而治之且有增加的扩展变化需求可能,扩展新的需求不方便。
    // 税务类型 枚举类型
    enum TaxBase
    {CN_Tax,US_Tax,DE_Tax,// 扩展,更改变化点FR_Tax
    };class SalesOrder
    {TaxBase tax;
    public:double CalculateTax(){...if(tax == CN_Tax){// 中国税务计算实现...}else if(tax == US_Tax){// 美国税务计算实现}else if(tax == DE_Tax){// 德国税务计算实现...}// 增加拓展法国,以下为更改变化点else if(tax = FR_Tax){// 法国税务计算实现...}			...}
    };
    

以上违背“开闭原则”,即对扩展开发,对更改封闭

  • 策略模式搭配简单工厂写法,代码具有良好的本地性

    // 税法策略类 —— 基类
    class TaxStrategy
    {
    public:virtual double Calculate(const Context& context) = 0;virtual ~TaxStrategy(){}
    }// 各税法对应派生类
    class CNTax : public TaxStrategy
    {
    public:virtual double Calculate(const Context& context){// 中国税务计算实现...}
    };class USTax : public TaxStrategy
    {
    public:virtual double Calculate(const Context& context){// 美国税务计算实现...}
    };class DETax : public TaxStrategy
    {
    public:virtual double Calculate(const Context& context){// 德国税务计算实现...}
    };// 扩展变化点
    class FRTax : public TaxStrategy
    {
    public:virtual double Calculate(const Context& context){// 法国税务计算实现...	}
    };// 以下部分稳定
    class SalesOrder
    {
    private:// 多态的变量,一般使用指针TaxStrategy* strategy;
    public:// 工厂模式创建一个具体的税务策略类SalesOrder(StrateFactory* strateFactory){this->strategy = strategyFactory->NewStrategy();}~SalesOrder(){delete this->strategy;}double CalculateTax(){...Context context();double val = strategy->Calculate(context);	// 多态调用...}
    }
    

动机 Motivation

  • 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;有时支持不使用的算法也是一个性能负担。
  • 策略模式可以在运行时根据需要透明地更改对象的算法,将算法与对象本身解耦

模式定义

定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。

结构

在这里插入图片描述
红色部分为稳定部分,蓝色部分为变化部分。

要点总结

  • Strategy及其子类为组件提供了一系列可重用的算法,从而可以使
    得类型在运行时方便地根据需要在各个算法之间进行切换。
  • Strategy模式提供了用条件判断语句以外的另一种选择,消除条件
    判断语句,就是在解耦合。含有许多条件判断语句的代码通常都需
    要Strategy模式。
  • 如果Strategy对象没有实例变量,那么各个上下文可以共享同一个
    Strategy对象,从而节省对象开销。

来源:极客班——C++设计模式入门


文章转载自:

http://1K3ItoDN.gryzk.cn
http://E5cy4Sv9.gryzk.cn
http://EllVWQmj.gryzk.cn
http://OqOsELuN.gryzk.cn
http://HknzP6rA.gryzk.cn
http://lrw5YWLG.gryzk.cn
http://GldxhQBK.gryzk.cn
http://YBWloHTO.gryzk.cn
http://M1kpMHkH.gryzk.cn
http://yDhxbxNO.gryzk.cn
http://gh1OflvS.gryzk.cn
http://uujLDJIY.gryzk.cn
http://WcxfhTh4.gryzk.cn
http://SzNJGOMe.gryzk.cn
http://cn7uOpDA.gryzk.cn
http://EFhE1B0v.gryzk.cn
http://yBc9Hw2v.gryzk.cn
http://nMJUuWDR.gryzk.cn
http://glXcw6Df.gryzk.cn
http://qShksaBP.gryzk.cn
http://gcOdcmBF.gryzk.cn
http://SQoWvoJF.gryzk.cn
http://bKz6ajeE.gryzk.cn
http://buG1DPI2.gryzk.cn
http://PpyKgris.gryzk.cn
http://MwOeifUL.gryzk.cn
http://lg1r6uou.gryzk.cn
http://aDH3HWot.gryzk.cn
http://LKrXLB2c.gryzk.cn
http://8X1nDfyO.gryzk.cn
http://www.dtcms.com/wzjs/753724.html

相关文章:

  • 生鲜网站开发WordPress与odoo接口
  • 网站搭建公司官网外贸网站搭建
  • 商务网站设计实训总结短视频制作软件免费
  • 网站在线动易网站栏目
  • 上海市建设安全协会网站特种工什么叫静态网站
  • 途牛网站建设功能需求分析微信企业网站源码下载
  • 城乡建设杂志官方网站wordpress上线apache
  • 奢侈品网站建设2023年免费域名推荐
  • 上海做高端网站最近国际新闻大事20条
  • 厦门响应式网站建设wordpress文章id排列
  • 网页设计做军事网站的感想衡水企业网站制作
  • 凡科做网站不好android 不装插件 wordpress
  • 网站后台多附件上传wordpress默认主体设置
  • 济宁网站建设有限公司宁波网站建设方案咨询
  • 滨州网站建设phpi企业网站做seo的必要性
  • 网站设计三把火科技不写代码做网站
  • wordpress网站托管百度网页版入口网址
  • 湘潭做网站品牌磐石网络crm客户管理系统免费软件
  • 网站单页生成器58同城赶集网
  • wordpress 7天热门seo排名关键词点击
  • 自己做本地网站济南网站建设是什么
  • 成都教育网站建设做网站常用代码向右浮动怎么写
  • 淮南网官方网站东莞市公司网站建设
  • 烟台百度网站建设推广网站设计上海
  • 电商网站设计模板建设工程教育网好还是环球网站好
  • 网站备案服务码口令是什么意思自己做一个入库出库系统
  • 衡阳市城乡建设协会官方网站邯郸市瑞荣网络科技有限公司
  • 做c语言的题目的网站沈阳软件定制开发
  • 东莞网络营销型网站营销型网站建设怎么收费
  • 关掉自己做的网站江苏中小企业建站价格