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

凡科网登录手机端城关网站seo

凡科网登录手机端,城关网站seo,上海营销型网站建设,虚拟主机网站设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 动态地将责任附加到对象上,若要扩…

设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。

设计思想

动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

装饰类继承自超类,继承是为了有正确的类型,而非继承超类的行为。

业务场景

假定你需要给蜜雪冰城设计一套售卖系统。他们家所有的饮料假设只有描述和价格两种属性,你可能又会想到用继承去解决:先抽象一个奶茶父类,然后每种奶茶都继承该父类并实现各自的display和cost方法。

你很快就会发现这么做有很多麻烦:首先,这家奶茶店所有的奶茶种类加一起数量可能有几十种数百种,这也就意味着你的子类会有很多很多;其次,这么设计似乎并不符合实际的业务场景,人们点奶茶的时候并不是一成不变的,有的不要珍珠,有的双倍糖等等,加的调料和份数也不一样,那么最后如何描述这杯奶茶以及计算其价格就成了问题。

代码案例

#include<iostream>
#i#include<iostream>
#include<vector>
#include<algorithm>
#include <string>
#include <memory>//饮料抽象类
class Beverage {
public:virtual ~Beverage() {};virtual std::string getDescription() = 0;virtual double cost() = 0;
protected:std::string description;};
//调料装饰者类
class Condimentecorator :public Beverage {
public:virtual ~Condimentecorator() {};virtual std::string getDescription() = 0;
};//espresso 饮料类
class Espresso :public Beverage {
public:Espresso() :Beverage(){description = "Espresso";}std::string getDescription() { return description; }double cost() {return 1.99;}
};//houseblend 饮料类
class HouseBlend :public Beverage {
public:HouseBlend() :Beverage(){description = "HouseBlend";}std::string getDescription() { return description; }double cost() {return 0.89;}
};//DarkRoast 饮料类
class DarkRoast :public Beverage {
public:DarkRoast() :Beverage(){description = "DarkRoast";}std::string getDescription() { return description; }double cost() {return 0.99;}
};//Decat 饮料类
class Decat :public Beverage {
public:Decat() :Beverage(){description = "Decat";}std::string getDescription() { return description; }double cost(){return 1.05;}
};//Mocha调料装饰者
class Mocha :public Condimentecorator {public:Mocha(std::shared_ptr<Beverage> be) :Condimentecorator(), beverage(be) {}std::string getDescription() {return (beverage->getDescription() + " Mocha");}double cost(){return 0.2 + beverage->cost();}public:std::shared_ptr<Beverage> beverage;
};//Soy调料装饰者
class Soy :public Condimentecorator {
public:Soy(std::shared_ptr<Beverage> be):Condimentecorator(),beverage(be){}std::string getDescription(){return (beverage->getDescription() + " Soy");}double cost(){return 0.15 + beverage->cost();}
public:std::shared_ptr<Beverage> beverage;
};//Whip调料装饰者
class Whip :public Condimentecorator {
public:Whip(std::shared_ptr<Beverage> be) :Condimentecorator(), beverage(be) {}std::string getDescription(){return (beverage->getDescription() + " Whip");}double cost(){return 0.10 + beverage->cost();}
public:std::shared_ptr<Beverage> beverage;
};int main()
{std::shared_ptr<Beverage> beverage = std::make_shared<Espresso>();std::cout << beverage->getDescription()<<" costs: "<<beverage->cost() << std::endl;std::shared_ptr<Beverage> beverage2 = std::make_shared<DarkRoast>();std::cout << beverage2->getDescription() << " costs: " << beverage2->cost() << std::endl;beverage2 = std::make_shared<Mocha>(beverage2);std::cout << beverage2->getDescription() << " costs: " << beverage2->cost() << std::endl;beverage2 = std::make_shared<Mocha>(beverage2);std::cout << beverage2->getDescription() << " costs: " << beverage2->cost() << std::endl;beverage2 = std::make_shared<Whip>(beverage2);std::cout << beverage2->getDescription() << " costs: " << beverage2->cost() << std::endl;auto it = std::make_shared<Whip>(beverage2);std::cout << it->cost() << " " << it->getDescription() << std::endl;std::cout << it->beverage->cost() << " " << it->beverage->getDescription() << std::endl;return 0;
}
http://www.dinnco.com/news/44077.html

相关文章:

  • 网站经常被挂码seo网站管理招聘
  • 做网站是不是涉及很多语言职搜索引擎优化好做吗
  • 芷江建设局网站我要软文网
  • 网络广告的发布方式包括宁波seo推荐
  • 手机网站开发的目的及定位网络营销的策略包括
  • 深圳网站制作公司可以给香港网站做维护和开发吗网站建设的步骤
  • 注册物业公司需要什么手续和条件网站seo推广招聘
  • 简述网站建设评估的指标有哪些聚名网
  • 做淘宝客网站赚钱吗软文广告属于什么营销
  • 上海免费网站建设服务福建省人民政府门户网站
  • 做网站对电脑要求高吗360营销
  • 做电影网站解决版权问题网站排名优化客服
  • 街道网站建设seo怎么做?
  • 上海建网站开发公企业网站seo点击软件
  • 古风网站建设模板成都官网seo厂家
  • wordpress安装上传失败放心网站推广优化咨询
  • 高仿id97网站模板如何在百度推广
  • b站看片厦门百度整站优化服务
  • 手机网站模板 商城网络宣传
  • 武汉网站建设组织seo综合查询网站源码
  • 市场营销网站建设网络营销实践总结报告
  • 北京幼儿园网站开发宁波谷歌seo推广公司
  • 百度云服务器做网站稳定吗坚决把快准严细实要求落实到位
  • 免费网站源码下载器南京seo收费
  • 做翻译兼职的网站是哪个网络推广app是干什么的
  • 南京网站建设 seo企业建站 平台
  • 国外有趣的网站h5页面制作平台
  • 高端个人网站114黄页
  • 网站后台管理页面模板站长工具箱
  • 圣辉友联刘金鹏做网站深圳网站优化推广