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

网站建设有关书籍商城网站建设行情

网站建设有关书籍,商城网站建设行情,个人建站软件公司,wordpress php函数设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 动态地将责任附加到对象上,若要扩…

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

设计思想

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

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

业务场景

假定你需要给蜜雪冰城设计一套售卖系统。他们家所有的饮料假设只有描述和价格两种属性,你可能又会想到用继承去解决:先抽象一个奶茶父类,然后每种奶茶都继承该父类并实现各自的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.yayakq.cn/news/902110/

相关文章:

  • 网站建设山西网站开发专业找什么工作
  • 网站的弹窗广告怎么做宁波seo教程app推广
  • 小企业网站建设制作平台网络运营团队
  • 做一个静态网站导航要多少钱论坛网站开发模板
  • 网站建设售后培训网站备案信息变更
  • 做铁合金用哪个外贸网站好网站建设导向
  • 网站建设简运维 简历嘉兴网站建设方案优化
  • 中国安能建设总公司网站邯郸最新通告今天
  • 静安集团网站建设连山区网站建设
  • 网站域名所有权证明外贸公司经营范围大全
  • 申请网站做自己的产品天津滨海新区旅游景点
  • 建设银行公积金预约网站首页php做视频分享网站
  • 北京网站建设第一html教程百度云
  • 自个网站关于建设二级网站的报告
  • 手机网站自动跳转怎么解决网站乱码解决办法
  • 基于ssh架构网站开发优化手机性能的软件
  • 南京网站推广哪家便宜公司备案 网站主办者名称
  • 响应式手机网站网站seo哪家好
  • 汕头选择免费网站优化WordPress调用画廊
  • 陕西营销型手机网站建设php成品网站下载
  • it在线学习网站开发设计方案表达
  • 企业网站建设费入什么科目wordpress附近商家
  • 多平台网站开发哈尔滨站建筑面积
  • 淘客那些网站怎么做的石家庄公司做网站
  • 但是网站相关内容和程序并没有建设完_其次网站公司给我公司的功能型网站制作多少钱
  • php网站怎么做静态化网站建设费需要摊销吗
  • 手机上如何制作自己的网站qq浏览器小程序
  • html演示网站去黄山旅游攻略和费用是多少
  • 个人怎么建设图书网站海南省人才在线
  • 做网站需要机吗wordpress音乐悬浮