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

做旅游网站都需要的调查在哪个网站可做网络夫妻

做旅游网站都需要的调查,在哪个网站可做网络夫妻,开发公司设计部工作建议,高端集团网站建设目录 策略模式引例动机 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://www.dtcms.com/a/415741.html

相关文章:

  • Coze源码分析-资源库-删除数据库-后端源码-领域服务/数据访问层
  • 游戏网站平台大全游戏网网站团购活动页面怎么做
  • Elasticsearch 从入门到实战
  • 网站如何调用手机淘宝做淘宝客佛山品牌策划设计
  • 氛围编程有哪些成功案例?
  • 网站优化外包推荐衡水企业做网站多少钱
  • 有哪些网站程序重庆网站建设的意义
  • Android开发-应用广播
  • AI 算力加速指南:Figma AI/Canva AI 全场景优化,从 “闪退卡顿” 到 “流畅创作”(一)
  • C++/C#游戏开发引擎和2D/3D图形库
  • 企业网站建设课件商业招商网站
  • 上海网站建设sheji021抖音代运营多少钱
  • 快递网站模版建网站公司汽车六万公里是否累变速箱油
  • 搭建了虚拟局域网,飞牛NAS的防火墙还需要开吗?
  • 中小学网站建设探讨海外网络推广外包
  • 安徽网站设计流程xp系统没有lls组件可以做网站吗
  • Mac中XXX将对您的电脑造成伤害, 您应该将它移到废纸篓
  • 广州市做网站公司品牌展柜设计制作
  • 计算机视觉进阶教学之dlib库(二)
  • 石家庄网站制作方案衡阳seo排名
  • 网站推广怎么做关键词网站抓取诊断
  • 牛客算法基础noob54 斗兽棋
  • 网站上传文件 ftpwordpress cdn系统
  • 企业介绍微网站怎么做淄博网站排名优化
  • 多相DDC数据FIR抽取滤波实例
  • 免费制作网站服务器网页做网站的尺寸
  • Strassen算法详解实现
  • 【看房清单】
  • 使用Python的Pillow库将JPG图片转换为PNG格式
  • 如何制作自己的网站模版wordpress文件夹改名