1、装饰模式

动态的给一个对象添加一些额外的职责;

侧重于功能的扩展:对其功能可以自由的增加或者减少;


2、具体实现

(1)、代码实现

#include<iostream>usingnamespacestd;classCar{public:virtualvoidshow()=0;private:};classRunCar:publicCar{public:virtualvoidshow(){cout<<"可以跑"<<endl;}private:};classSwimCarDriver:publicCar{public:SwimCarDriver(Car*car){m_car=car;}virtualvoidshow(){m_car->show();cout<<"可以游泳"<<endl;}private:Car*m_car;};classFlyCarDriver:publicCar{public:FlyCarDriver(Car*car){{m_car=car;}virtualvoidshow(){m_car->show();cout<<"可以飞"<<endl;}private:Car*m_car;};//功能可以自由自在的组合,功能很强大!!!intmain(void){Car*mycar=NULL;mycar=newRunCar;mycar->show();cout<<"--------------------------------"<<endl;FlyCarDriver*flycar=newFlyCarDriver(mycar);flycar->show();cout<<"--------------------------------"<<endl;SwimCarDriver*swimcar=newSwimCarDriver(flycar);swimcar->show();return0;}


3、适配器模式

适配器是将2个不同的对象进行连接和组合!

将一个类的接口转换成客户希望的另外一个接口,


4、具体实现

(1)、代码如下

#include<iostream>usingnamespacestd;classCurrent18{public:virtualvoiduseCurrent18()=0;private:};classCurrent220{public:voiduseCurrent220(){cout<<"我是220V,欢迎使用"<<endl;}private:};classAdapter:publicCurrent18{//适配器,要满足客户的需求;public:Adapter(Current220*current){m_current=current;}virtualvoiduseCurrent18(){cout<<"适配器适配220V"<<endl;m_current->useCurrent220();}private:Current220*m_current;};intmain(void){Current220*current220=newCurrent220;Adapter*adapter=newAdapter(current220);adapter->useCurrent18();deletecurrent220;return0;}

(2)、运行结果