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

wordpress 多站点 主站点怎么做跨境电商网站

wordpress 多站点 主站点,怎么做跨境电商网站,wordpress百万数据,企业网查询天眼查一、案例背景 Starbuzz是以扩张速度最快而闻名的咖啡连锁店。如果你在街角看到它的店#xff0c;在对面街上肯定还会看到另一家。因为扩张速度实在太快了#xff0c;他们准备更新订单系统#xff0c;以合乎他们的饮料供应要求。他们原先的类设计是这样的…… 购买咖啡时在对面街上肯定还会看到另一家。因为扩张速度实在太快了他们准备更新订单系统以合乎他们的饮料供应要求。他们原先的类设计是这样的…… 购买咖啡时可以要求在其中加入各种调料例如蒸奶Steamed Milk、豆浆Soy、摩卡Mocha也就是巧克力风味或覆盖奶泡。星巴克会根据所加入的调料收取不同的费用。所以订单系统必须考虑到这些调料部分。这是他们的第一个尝试…… 很明显Starbuzz为自己制造了一个维护噩梦如果牛奶的价格上扬怎么办新增一种焦糖调料风味时怎么办 二、案例分析 看到这么多类时你肯定也会被震惊到……那么问题来了如何进行改进呢一个直截了当的解决方案是利用实例变量和继承就可以追踪这些调料。比如我们在基类中加上实例变量这些布尔值代表是否加上该调料牛奶豆浆摩卡奶泡…… #include iostream #include string using namespace std;class Beverage { private:string description {};bool milk {};bool soy {};bool mocha {};bool whip {};public:const string getDiscription(){return description;};void setDescription(const string description){this-description description (Add (milk ? Milk : ) (soy ? Soy : ) (mocha ? Mocha : ) (whip ? Whip : ) );}virtual const float cost(){return (milk ? 1 : 0) (soy ? 2 : 0) (mocha ? 1 : 0) (whip ? 1.5 : 0);}const bool hasMilk() const{return milk;};void setMilk(const bool value){milk value;};const bool hasSoy() const{return soy;};void setSoy(const bool value){soy value;};const bool hasMocha() const{return mocha;};void setMocha(const bool value){mocha value;};const bool hasWhip() const{return whip;};void setWhip(const bool value){whip value;}; };class HouseBlend : public Beverage { public:HouseBlend(){setMilk(true);setSoy(true);setDescription(House Blend);}const float cost() override{return 5.0 Beverage::cost();} };class DarkRoast : public Beverage { public:DarkRoast(){setMilk(true);setWhip(true);setDescription(DarkRoast);}const float cost() override{return 8.0 Beverage::cost();} };class Decaf : public Beverage { public:Decaf(){setMilk(true);setWhip(true);setSoy(true);setDescription(Decaf);}const float cost() override{return 10.0 Beverage::cost();} };int main() {cout 我点了一杯 HouseBlend().getDiscription() 花了 HouseBlend().cost() 元endl;cout 我点了一杯 DarkRoast().getDiscription() 花了 DarkRoast().cost() 元endl;cout 我点了一杯 Decaf().getDiscription() 花了 Decaf().cost() 元endl;return 0; }看起来似乎还行。但是如果将来由于原材料上涨某些调料需要上涨价钱怎么办如果出现了新的调料呢如果顾客想要双倍摩卡的咖啡呢 这些变化都需要我们去直接变更源码。 开放关闭原则类应该对扩展开放对修改关闭。 我们的目标是允许类容易扩展在不修改现有代码的情况下就可以搭配新的行为。这样的设计具有弹性可以应对改变可以接收新的功能来应对改变的需求。 让我们来看看使用装饰者模式是怎么解决问题的 三、代码分析 这里给出相关案例的C代码实现 #include iostream #include string using namespace std;class Beverage { protected:string description unknown Beverage;public:virtual const string getDescription() const{return description;}virtual const double cost() const 0; };class CondimentDecorator : public Beverage { public:virtual const string getDescription() const 0; };class HouseBlend : public Beverage { public:HouseBlend(){description HouseBlend;}const double cost() const override{return 5.00;} };class DarkRoast : public Beverage { public:DarkRoast(){description DarkRoast;}const double cost() const override{return 8.00;} };class Decaf : public Beverage { public:Decaf(){description Decaf;}const double cost() const override{return 10.00;} };class Milk : public CondimentDecorator { public:Beverage* beverage {};Milk(Beverage* beverage){this-beverage beverage;}const string getDescription() const override{return beverage-getDescription() Milk;}const double cost() const override{return beverage-cost() 1.0;} };class Soy : public CondimentDecorator { public:Beverage* beverage {};Soy(Beverage* beverage){this-beverage beverage;}const string getDescription() const override{return beverage-getDescription() Soy;}const double cost() const override{return beverage-cost() 2.0;} };class Mocha : public CondimentDecorator { public:Beverage* beverage {};Mocha(Beverage* beverage){this-beverage beverage;}const string getDescription() const override{return beverage-getDescription() Mocha;}const double cost() const override{return beverage-cost() 2.0;} };class Whip : public CondimentDecorator { public:Beverage* beverage {};Whip(Beverage* beverage){this-beverage beverage;}const string getDescription() const override{return beverage-getDescription() Whip;}const double cost() const override{return beverage-cost() 2.0;} };int main() {Beverage* houseblend new Milk(new Soy(new HouseBlend()));Beverage* darkRoast new Milk(new Soy(new Whip(new DarkRoast())));Beverage* decaf new Milk(new Whip(new Decaf()));// 双倍摩卡Beverage* doubleMochaCoffee new Milk(new Soy(new Mocha(new Mocha(new HouseBlend()))));cout 我点了一杯 houseblend-getDescription() 花了 houseblend-cost() 元 endl;cout 我点了一杯 darkRoast-getDescription() 花了 darkRoast-cost() 元 endl;cout 我点了一杯 decaf-getDescription() 花了 decaf-cost() 元 endl;cout 我点了一杯 doubleMochaCoffee-getDescription() 花了 doubleMochaCoffee-cost() 元 endl;return 0; }
http://www.hkea.cn/news/14566924/

相关文章:

  • 建立自己的网站怎么样做Wordpress 转发后查看
  • 网站建设柒金手指花总11wordpress自带主题下载失败
  • wordpress访问局域网苏州优化方式
  • 自己公司怎样做免费的网站wordpress 图片命名
  • 包头做网站的公司招聘信息天津百度seo推广
  • 可以做引流网站的源码远程服务器安装wordpress
  • 安徽城乡住房建设厅网站重庆网站seo多少钱
  • wordpress怎么重新初始化百度seo和sem的区别
  • 网站构架图怎么做云龙徐州网站开发
  • 做网站交互效果用什么软件大学生网页设计心得体会
  • 网站开发之美北京国税局网站官网入口
  • asp.net网站发布到虚拟主机郴州新网二手房出售
  • 环保科技东莞网站建设企业网站的建设与实现论文
  • 虚拟主机销售网站鹤壁市网站建设
  • 网站流量指标有哪些做设计需要知道的几个网站
  • 企业内部网站模板下载关于做外汇现货的网站
  • 成都做网站做的好的公司电商网站开发平台实验
  • 做网站的是什么工种找人做网站都需要提供什么
  • 电子商务网站建设系统特点长沙房价走势最新消息
  • 企业网站怎么建立app开发过程中的困难
  • 惠民县建设网站大家都用哪个网站做读书笔记
  • 伍佰亿是什么网站内蒙古建设工程造价信息网官网
  • 兰州新区农投建设网站资源软件库
  • 外贸网站建设厦门南沙做网站
  • 甘肃 网站建设 开发 app投票网站源码php
  • 陕西网站制作qq群石佛营网站建设
  • seo优化网站技术排名百度推广企业网站的基本功能有哪些
  • 网站建设思想重视不够网站分几种类型
  • 开发软件网站建设asp网站开发实例pdf
  • 网站建设的广告语html网页爱心代码