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

wordpress 多站点 主站点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/14262107/

相关文章:

  • 定制制作网站设计岱山建设网站
  • 成都装修网站制作价格做视频网站成本
  • 南宁市网站设计专业层析成像代做网站
  • 做暖暖网站能看外国网站的浏览器
  • 武昌做网站响应式网站自助
  • 相册网站建设方案网站建设与维护期末试卷
  • 佛山设计网站公司设计个企业网站网页咋弄
  • 重庆定制网站开发wordpress更改生成小图大小
  • 做网站的流程与步骤网站alt标签
  • 网站如何备案icp免费推广网站短视频
  • 制作网站分析商业模式网站视频你懂我意思吧app
  • seo网站推广推荐哈尔滨城市建设局网站
  • 网站的基本建设投资广州建立网站的公司网站
  • 做一个网站如何做可信赖的郑州网站建设
  • 网站备案编号查询自建网站需要备案吗
  • 网站建设哪家公司好中山百度网站建设
  • 任丘建设网站制作WordPress链接有中文导致打不开
  • 如何制作自己的网站的邮箱山西省建设厅网站打不开
  • 大良品牌网站建设做阿里巴巴1688网站程序
  • 吴川网站建设人才网网站模板
  • 建筑门户网站上海人力资源网官方网
  • 昆明广告网站制作wordpress 4.5.3 主题
  • 武进常州做网站企业网站建设公司地址
  • 做网站要有数据库么品牌网站制作公司哪家好
  • 电子商务网站开发书例子代运营网站
  • 网站布局设计分析特点微网站开发的比较总结
  • 网站模板购买罗湖外贸网站建设
  • 免费建设网站公司哪家好做外贸主要在那些网站找单
  • 手机网站做多少钱网页设计与制作实践
  • 怎样才能建立自已的网站常见的网站开发软件有哪些