装饰模式和适配器模式
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)、运行结果
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。