c++设计模式—装饰者模式

来源:互联网 发布:稳定性最好的单片机 编辑:程序博客网 时间:2024/06/18 00:17

--以下是一个初学者的自我表白,有些错误请大家指出来啊。

#include<iostream>#include<string>using namespace std;// 抽象的饮料class Beverage {public:virtual string description() = 0;// 返回描述virtual float cost() = 0; // 返回价格};class HouseBlend : public Beverage {public:string description() { return "混合咖啡"; }float cost() { return 2.0; }};class Espresso : public Beverage {public:string description() { return "意大利浓咖啡"; }float cost() { return 3.0; }};// 抽象调料class Decorator : public Beverage {protected://mBeverage * mb;//*public:Decorator(Beverage * bb) : mb(bb) {}};// 具体的调料:牛奶class Milk : public Decorator {public:Milk(Beverage * bb) : Decorator(bb) {}string description() {string str = mb->description();str += " 牛奶";return str;}float cost() {return mb->cost() + 0.5;}};class Mocha : public Decorator {public:Mocha(Beverage * bb) : Decorator(bb) {}string description() {string str = mb->description();str += " 摩卡";return str;}float cost() {return mb->cost() + 0.7;}};int main( ){Decorator * d = new Milk(new Espresso);d = new Mocha(d);d = new Milk(d);cout << d->description() << ":" << d->cost() << endl;system("pause");return 0;}


原创粉丝点击