欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > asp.net >内容正文

asp.net

设计模式的理解: 适配器模式 adapter -ag凯发k8国际

发布时间:2024/10/14 asp.net 27 豆豆
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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图