Closed zync-mzy closed 3 years ago
class Beverage {
public:
virtual std::string GetDescription() { return description_; }
virtual double Cost() = 0;
protected:
std::string description_ = "unknown";
};
// 被装饰者
class Espresso : public Beverage {
public:
Espresso() { description_ = "Espresso"; }
virtual double Cost() { return 1.99; }
};
// 装饰者
class Mocha : public Beverage {
public:
Mocha(Beverage* b) { beverage_ = b; }
virtual std::string GetDescription() {
return beverage_->GetDescription() + ", Mocha";
}
virtual double Cost() { return .20 + beverage_->Cost(); }
private:
Beverage* beverage_;
};
private
,通过公开的静态成员函数获取实例;实例应是静态变量,如果不存在则创建,存在则直接返回
1 设计模式入门