读书人

装点器模式Decorator(c++)

发布时间: 2013-07-01 12:33:04 作者: rapoo

装饰器模式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

?

读书人网 >C++

热点推荐