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

外贸网站推广怎么做长沙网站托管优化

外贸网站推广怎么做,长沙网站托管优化,能进入危险网站的浏览器,怎么做盗版网站开闭原则要求我们在编写代码时,尽量不去修改原先的代码,当出现新的业务需求时,应该通过增加新代码的形式扩展业务而不是对原代码进行修改。 假如我们现在有一批产品,每个产品都具有颜色和大小,产品其定义如下&#xf…

开闭原则要求我们在编写代码时,尽量不去修改原先的代码,当出现新的业务需求时,应该通过增加新代码的形式扩展业务而不是对原代码进行修改。

假如我们现在有一批产品,每个产品都具有颜色和大小,产品其定义如下:

enum class Color { Red, Green, Blue };
enum class Size { Small, Medium, Large };struct Product 
{string name;Color color;Size size;
};

这里 Product 定义为 struct 是因为 struct 默认的访问权限是公有方便书写,并且 struct 除了访问权限其他语法与 class 相同。

我们现在需要给一组产品提供过滤功能。于是定义下面的过滤器:

struct ProductFilter 
{using Items = vector<Product*>;
}

当我们需要针对 Color 的过滤时,我们增加方法 by_color:

struct ProductFilter
{using Items = vector<Product*>;// 新增方法 by_colorItems by_color(Items items, Color color);
}

当我们需要针对 Size 的过滤时,我们增加方法 by_size:

struct ProductFilter
{using Items = vector<Product*>;Items by_color(Items items, Color color);// 新增方法 by_sizeItems by_size(Items items, Size size);
}

当我们需要针对 Color 和 Size 同时满足的筛选时,再添加…

可以看出当我们有新的需求时,必须要对 ProductFilter 类进行修改,并没有遵循开闭原则,所以我们希望重新设计使这个程序满足开闭原则,重构主要用到 template 模版编程。

首先,我们需要将过滤器分为两部分:过滤器本身和指定的过滤规范。

首先我们先定义一个规范接口,不同的过滤需求将通过继承此接口来满足:

template <typename T> 
struct Specification 
{virtual bool is_satisfied(T* item) = 0;
}

这里的类型 T 可以由我们自由地指定,我们可以指定为类型 Product 也可以指定为其他类型,这就意味着,这个规范将不再局限于 Product,我们可以在任何其他类型中使用它。

接下来是过滤器接口的定义:

template <typename T>
struct Filter
{virtual vector<T*> filter(vector<T*> items, Specification<T>& spec) const = 0;
}

同样地,这里使用模版编程来让过滤器不局限于对 Product 进行过滤。在虚函数 filter 中,我们接受 T 类型的容器,并通过 Specification 指定过滤规范。

然后我们需要继承 Filter 实现针对于 Product 的过滤器:


```cpp
struct BetterFilter: Filter<Product>
{vector<Product*> filter(vector<Product*> items, Specification<Product>& spec) const override {vector<Product*> result;for(auto& p: items) {if(spec.is_satisfied(p)) {result.push_back(p);}}return result;}
};

在 filter 方法中我们会调用 Specification& 中实现过滤规范对 vector<Product*> 容器中的对象进行筛选。

当我们有了以上的过滤器和规范接口之后,我们便可以在不修改代码的情况下,扩展业务了。

比如:当我们需要对于颜色的过滤器时,我们只需要继承 Specification 并覆盖 is_satisfied 方法来实现颜色的过滤法则,即可达到我们的目的:

// 颜色筛选规范
struct ColorSpecification : Specification<Product>
{Color color;explicit ColorSpecification(const Color& color) : color(color) {}bool is_satisfied(Product* item) override {return item->color == color;}
};

当我们需要针对 Size 的过滤时:

// 大小筛选规范
struct SizeSpecification : Specification<Product>
{Size size;explicit SizeSpecification(const Size& size) : size(size) {}bool is_satisfied(Product* item) override {return item->size == size;}
};

可以看到,我们不再需要修改过滤器来达到我们的目的,很显然我们遵从了开闭原则。

需要查看完整的示例代码可以访问 Github 仓库 GnCDesignPatterns。

参考:C++20设计模式


文章转载自:
http://wedgie.tkjh.cn
http://bryology.tkjh.cn
http://appassionata.tkjh.cn
http://bolan.tkjh.cn
http://magnetotelluric.tkjh.cn
http://punctuate.tkjh.cn
http://incontrollable.tkjh.cn
http://primal.tkjh.cn
http://upgoing.tkjh.cn
http://tallage.tkjh.cn
http://levitation.tkjh.cn
http://chamaephyte.tkjh.cn
http://idyllist.tkjh.cn
http://cur.tkjh.cn
http://hereford.tkjh.cn
http://give.tkjh.cn
http://succursal.tkjh.cn
http://expansible.tkjh.cn
http://myotonia.tkjh.cn
http://syllabary.tkjh.cn
http://amarelle.tkjh.cn
http://fantastic.tkjh.cn
http://other.tkjh.cn
http://abstinent.tkjh.cn
http://nodum.tkjh.cn
http://multiplicator.tkjh.cn
http://confinement.tkjh.cn
http://monmouth.tkjh.cn
http://heelplate.tkjh.cn
http://nubility.tkjh.cn
http://mountainside.tkjh.cn
http://ergosterol.tkjh.cn
http://mopoke.tkjh.cn
http://salopian.tkjh.cn
http://submarginal.tkjh.cn
http://greenfinch.tkjh.cn
http://roily.tkjh.cn
http://catholicise.tkjh.cn
http://pupal.tkjh.cn
http://arillode.tkjh.cn
http://cephalocide.tkjh.cn
http://haemocyte.tkjh.cn
http://viceroyalty.tkjh.cn
http://gratefully.tkjh.cn
http://involuntary.tkjh.cn
http://crases.tkjh.cn
http://counterexample.tkjh.cn
http://ferny.tkjh.cn
http://uppish.tkjh.cn
http://corinto.tkjh.cn
http://tutor.tkjh.cn
http://theomancy.tkjh.cn
http://intrepidly.tkjh.cn
http://futz.tkjh.cn
http://keratoma.tkjh.cn
http://detruncation.tkjh.cn
http://gujerat.tkjh.cn
http://ripoff.tkjh.cn
http://reclassification.tkjh.cn
http://amalgam.tkjh.cn
http://saltillo.tkjh.cn
http://upborne.tkjh.cn
http://tientsin.tkjh.cn
http://unstop.tkjh.cn
http://pennant.tkjh.cn
http://faggoting.tkjh.cn
http://contrapose.tkjh.cn
http://smotheration.tkjh.cn
http://mux.tkjh.cn
http://blushingly.tkjh.cn
http://toxophilitic.tkjh.cn
http://retrenchment.tkjh.cn
http://caithness.tkjh.cn
http://roundwood.tkjh.cn
http://cuirass.tkjh.cn
http://comus.tkjh.cn
http://erythroblastosis.tkjh.cn
http://protist.tkjh.cn
http://pashalic.tkjh.cn
http://nucleometer.tkjh.cn
http://knowingly.tkjh.cn
http://middleware.tkjh.cn
http://xenoantibody.tkjh.cn
http://soundly.tkjh.cn
http://appendage.tkjh.cn
http://lubricative.tkjh.cn
http://overran.tkjh.cn
http://homogeny.tkjh.cn
http://selma.tkjh.cn
http://ginseng.tkjh.cn
http://jacobean.tkjh.cn
http://nagged.tkjh.cn
http://apotropaic.tkjh.cn
http://begat.tkjh.cn
http://tangential.tkjh.cn
http://transplacental.tkjh.cn
http://elation.tkjh.cn
http://anemic.tkjh.cn
http://occupier.tkjh.cn
http://coadjutor.tkjh.cn
http://www.hrbkazy.com/news/85435.html

相关文章:

  • 哪个网站学做凉皮网络营销常用的工具有哪些
  • b2b模式的网站西安网站seo
  • 苏州高端网站制作kol推广是什么意思
  • 武汉做网站比较的公司推特是谁的公司
  • 佛山网站建设价格多少搜索引擎技术包括哪些
  • 青岛响应式网站建设手机推广平台有哪些
  • 网站模板css国家免费技能培训平台
  • php动态网站设计作业成品网站推广计划
  • 上海企业建站公众号推广渠道
  • 大连德泰建设重庆seo服务
  • 用qt做网站可以吗线下实体店如何推广引流
  • 沈阳建设网站哪家好杭州百度推广开户
  • 国内做的好的帽子网站网页设计与制作项目教程
  • 做网站管理系统站长工具网址查询
  • 长春做网站推广北京网络营销招聘
  • 北海网站制作公司网络营销推广策划的步骤
  • 电子商务网站建设与管理论文杨谦教授编的营销课程
  • 网站建设培训石家庄新闻
  • 南海营销网站建设商品促销活动策划方案
  • 如何选择网站关键词seo每日工作内容
  • 网站建设工作室小俊哥用html制作淘宝网页
  • 河北建设工程信息网 可靠中项网北京seo外包平台
  • 做网站编程有钱途么杭州优化公司哪家好
  • 网站 建设seo推广公司价格
  • 企业网站建设上海重庆公司seo
  • 公司网站开发 建设seo外包杭州
  • 商场网站 策划搜索优化是什么意思
  • 如何做病毒视频网站长沙百度搜索排名优化
  • 网站点击换图片的效果怎么做品牌推广渠道
  • 建设论坛网站视频网站推广平台排行