设计模式的理解: 适配器模式 adapter -ag凯发k8国际
ag凯发k8国际
收集整理的这篇文章主要介绍了
设计模式的理解: 适配器模式 adapter
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
适配器模式,是为了转变接口方式的一种模式。即通过一个中介,作为两个不兼容接口之间的桥梁(老接口与新接口),使原先的老对象不仅可以使用自身的老接口,而且还可以通过适配器类,用新接口对老对象进行操作。
实现方式如下:
所谓的target接口就是用户所希望使用的新接口,adaptee 就是我们原先的老对象。而adapter 为适配器。上图表示适配器类实现了目标接口target,它还包含了adaptee对象,以方便在新接口中调用子对象子对象adaptee的方法。
例如,对于电子设备来讲,必须输入标准电压和频率才可以正常运转。然而每个国家的标准并不一样,例如英国的标准电压使230v ,而中国的标准电压是220v。怎么样让英国的标准电器设备能在中国良好的工作,这中间就需要一个“中介”,让输入到新接口的电压是220v,经过处理后,原先的老对象接收到的230v。又例如,电器接收的是电信号,而声控电器输入的是声音信号,声音信号变成电信号的过程中就需要依赖适配器。
适配器模式示例如下:
//声音信号接收器的接口 class isoundsignalreceiver{ public :void receiver(soundsignal s)=0; } //电器设备抽象类 class electrical{ public:void work(electricalsignal e)=0; }//电器设备能够接收声音信号的适配器类 class adapter :public isoundsignalreceiver{ private:electrical * electrical; protected:virtual electricalsignal soundtoelectrical(soundsignal s){// 声音信号转电信号的函数(可重载)......}public:adapter(electrical & el){ electrical=el; }//实现新的接口void receiver(soundsignal s){electricalsignal esignal = soundtoelectrical(s);electrical->work(esignal );} }实现具体的抽象类,和使用示例
//电灯 class lamp:public electrical{ public:void work(electricalsignal e){// .. 发热发光..} }//电扇 class fan:public electrical{ public:void work(electricalsignal e){// .. 转动..} }//使用示例 void mainprocess(soundsignal soundsignal ){lamp lamp; //电灯fan fan ; //电扇//声控电灯adapter soundlamp(lamp); soundlamp.receiver(soundsignal);//声控电扇adapter soundfan(fan); soundfan.receiver(soundsignal); }
总结
以上是ag凯发k8国际为你收集整理的设计模式的理解: 适配器模式 adapter的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 设计模式的理解: 代理模式(proxy)
- 下一篇: 设计模式理解:中介者模式(mediato