- 观察者(Observer)模式
- 装饰者(Decorator)模式:
+ 保证接口不变的情况下加强肋的功能, 它保证的是被修饰的对象功能比原来对象丰富,但不做准入条件判断和准入参数过滤,如是否可以执行类的功能,过滤输入参数是否合法等,这不是装饰模式关心的。
+通常在构造函数里用参数的方式传进来装饰者对象。
+星巴兹 例子, 调制一杯咖啡,根据添加的材料累加价格,算出最终价格。
class CIRunner
{
public:
CIRunner() {};
~CIRunner() {};
virtual void mvRun() = 0;
};
class CRunnerWithJet : public CIRunner
{
public:
CRunnerWithJet(CIRunner* opRunner) { mopRunner = opRunner; };
~CRunnerWithJet() {};
void mvRun()
{
cout << "加快运动员的速度: 为运动员增加喷气装置" << endl;
mopRunner->mvRun();
}
private:
CIRunner* mopRunner;
};
int main()
{
//定义运动员
CIRunner* op_runner = new CRunner();
//对其功能加强
op_runner = new CRunnerWithJet(op_runner);
//看看它的跑步情况如何
cout << "===增强后的运动员的功能===" << endl;
op_runner->mvRun();
return 0;
}