首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

装点器模式Decorator(c++)

2013-07-01 
装饰器模式Decorator(c++)??相应的代码:#include iostream#include vector#include stringusing nam

装饰器模式Decorator(c++)

?


装点器模式Decorator(c++)
?

相应的代码:

#include <iostream>#include <vector>#include <string>using namespace std;// base classclass Beverage{public:virtual string getDescription() = 0;virtual float cost() = 0;};// base class of condiment, also a base decorator classclass CondimentDecorator : public Beverage{protected:Beverage *m_coffee;};// coffee DarkRoastclass DarkRoast: public Beverage{public:string getDescription() {return "Darkroast";}float cost() {return 5.0;}};// coffee Espressoclass Espresso:  public Beverage{public:string getDescription() {return "Espresso";}float cost() {return 6.5;}};// condiment milkclass Milk:  public CondimentDecorator{public:Milk() {}Milk(Beverage *coffee) {m_coffee = coffee;}string getDescription() {return m_coffee->getDescription() + ", Milk";}float cost() {return m_coffee->cost() + 1.0;}};// condiment mochaclass Mocha:  public CondimentDecorator{public:Mocha() {}Mocha(Beverage *coffee) {m_coffee = coffee;}string getDescription() {return m_coffee->getDescription() + ", Mocha";}float cost() {return m_coffee->cost() + 0.5;}};int main(){Beverage *coffee = new Espresso;coffee = new Milk(coffee);coffee = new Mocha(coffee);cout<<coffee->getDescription()<<" $"<<coffee->cost();getchar();return 0;}

?

打印出:

?

Esprosso, Milk, Mocha &8

?

热点排行