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

网站建设适合的企业湘潭电大网站

网站建设适合的企业,湘潭电大网站,企业网站建设专业精准丨 鸣远科技,校园网站建设价格定义 定义一些列算法,把他们一个个封装起来,并且使他们可以相互替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展、子类化)。 C实现 在不考虑策略模式的情况…

定义

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

C++实现

在不考虑策略模式的情况下,我们往往会写出以下代码:

class CompressData {
public:void compress(const char* stg_name, char* data, int size) {if (strcmp(stg_name, "lz4") == 0) {// lz4算法实现数据压缩} else if (strcmp(stg_name, "zlib") == 0) {// zlib算法实现数据压缩} else {// 未知算法,不支持}}
};

可以看出,如果我需要新增一个gzip压缩算法,那么我就需要在代码中新增一段实现gzip算法的代码。这明显违背了开放封闭原则。因此,考虑使用策略模式,代码实现如下:

class Strategy {
public:virtual void compress(char* data, int size) = 0;virtual ~Strategy() {}
};class Lz4Strategy : public Strategy {
public:void compress(char* data, int size) {// Lz4压缩算法实现}	
};class ZlibStrategy : public Strategy {
public:void compress(char* data, int size){// zlib压缩算法实现}
};class GzipStrategy : public Strategy {
public:void compress(char* data, int size){// Gzip压缩算法实现}
};

上述代码表明为每个策略单独创建一个类,这样在新增策略时,就只需要进行扩展即可。再来看CompressData类(上下文程序)如何实现。

class CompressData{
private:Strategy* _stg;
public:CompressData(StrategyFactory* factory){_stg = factory->createStrategy();}void compress(char* data, int size){_stg->compress(data, size);}~CompressData(){delete _stg;}
};

这里会用到工厂方法模式,客户程序在选择使用何中压缩算法时,是根据传入的工厂来决定的。到这里我们可以看出来,新增一个压缩策略,只需要扩展一个对应的压缩算法类即可,并不需要修改上下文程序。

类图

请添加图片描述
其中Context就是上下文程序,是稳定的,所有具体的策略都继承自抽象的策略,是变化的。因此新增策略,只需要对代码进行扩展即可。

总结

  • Strategy及其子类为组件提供了一系列可重用的算法,使得类型在运行时方便的根据需要在各算法之间切换。
  • 策略模式消除了条件判断语句,含有许多条件判断的语句往往可以使用策略模式来解耦合。
  • 如果Strategy对象没有数据成员,那么各个上下文之间可以共享同一个Strategy对象,从而节省对象开销。
http://www.yayakq.cn/news/817581/

相关文章:

  • 如何做一元购物网站工业设计公司产品外观
  • 英国做电商网站注册qq空间申请
  • 资中网站建设wordpress的程序文件
  • 购物网站如何建设网站开发和系统开发区别
  • 地产商网站建设关键词文案生成器
  • asp.net网站建设教程小米网站开发流程书
  • 二维码插件wordpress商城类网站怎么优化
  • 申请专利的网站济南网站设计制作要多久
  • 沙元埔做网站的公司桥东区网站建设
  • 网站子页设计广东新闻联播2019
  • 做塑料哪个网站好楚雄做网站
  • 杭州专业网站建设公司哪家好seo线下培训班
  • hi宝贝网站建设那家好怎么找需要推广的商家
  • 安徽平台网站建设制作汤唯梁朝伟做的视频网站
  • 网站开发实战 课程w网站怎么做
  • 做移门配件的网站wordpress深度优化
  • 企业网站的建设步骤包括郑州网站建设老牌公司
  • 做壁纸网站好wordpress外贸吾爱破解版
  • 信息型网站有哪些市场营销论文3000字
  • 专业的培训行业网站开发昆明响应式网站
  • 怎么做网页站点个人网站做淘宝客教程
  • 可以进入外国网站的浏览器网站的花费
  • 怀化买房网站资源下载wordpress
  • 免费企业自助建站平台阿坝网站建设
  • 专业提供网站建设服务公司网络公关事件
  • 工信部门备案网站网站怎么加内容
  • 海会网络做的网站怎么做优化青岛网站建设找
  • 做网站生意越来越差电脑网址大全
  • 装修网站是怎么建设的石家庄工程职业学院
  • 网站做推广要备案吗深圳公司网站设计公司