设计模式(12)---适配器模式

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一、定义

适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

解释:适配器模式好比一个电源适配器,生活中房间内的电压是220v,但是你的很多用电器就不是220v,比如电脑、手机等等,这是需要电源适配器来调节电压,使用电源适配器充电的过程就相当于适配器模式。

二、UML类图、基本代码

基本代码:

classPRogram

{staticvoidMain(string[] args)

{

Target target=newAdapter();

target.Request();

Console.Read();

}

}classTarget

{publicvirtualvoidRequest()

{

Console.WriteLine("commom request");

}

}classAdaptee

{publicvoidSpecificalRequest()

{

Console.WriteLine("specifical Request");

}

}classAdapter : Target

{privateAdaptee adptee =newAdaptee();publicoverridevoidRequest()

{

adptee.SpecificalRequest();

}

}

三、举例说明

国内电压是220v,朋友从国外购买一家用电器的工作电压是110v,这算是一个特殊需求。此时就需要电源适配器供电工作。代码如下:

classProgram

{staticvoidMain(string[] args)

{

China china=newAdapter();

china.Request();

Console.Read();

}

}//国内供电classChina

{publicvirtualvoidRequest()

{

Console.WriteLine("the voltage is 220v");

}

}//用电器供电特殊需求classForeign

{publicvoidSpecificalRequest()

{

Console.WriteLine("the voltage is 110v");

}

}//电源适配器classAdapter : China

{privateForeign foreign =newForeign();publicoverridevoidRequest()

{

foreign.SpecificalRequest();

}

}

View Code

四、优缺点及适用场景

优点:

1)可以在不修改原有代码的基础上复用现有的类,很好的遵守“开闭原则”.

缺点:

针对基本代码,重定义Adaptee的行为比较困难,这就需要生成Adaptee的子类并且使得Adapter引用这个子类而不是Adaptee本身。

适用场景:

系统需要复用现有类,而该类的接口不符合系统的需求。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航