class VipStrategy {
public:
//领取每日礼物
virtual int get_daily_gift() = 0;
virtual ~VipStrategy() = default;
};
class Vip1 : public VipStrategy {
public:
int get_daily_gift() override {
return 5000;
}
};
class Vip2 : public VipStrategy {
public:
int get_daily_gift() override {
return 10000;
}
};
class Context {
private:
VipStrategy* _vipStrategy = nullptr;
public:
explicit Context(VipStrategy* vipStrategy) : _vipStrategy(vipStrategy) {
}
~Context() {
delete _vipStrategy;
}
void get_daily_gift() {
this->_vipStrategy->get_daily_gift();
}
};
int main(const int argc, const char* argv[]) {
Context context(new Vip1());
return 0;
}