一、应用场景
在软件系统中,经常需要将一些现成的对象放到新的环境中进行使用,但是新的环境要求的接口,是这些现存对象所不能满足的,如何能利用现有的对象,又能满足新的引用环境所需要的接口。
比如不同国家的插座和插头不同,要用转接头。
现有的对象:国内买的插头。
新的环境:国外的插座。
适配器:转接头。
二、适配器模式的定义
将一个类的接口,转换成客户希望的另外一个接口。
适配器模式使得原本又有接口不兼容而不能一起工作的哪些类可以一起工作。
适配器模式包括三个对象
- Adaptee 初始角色,实现了我们想要的功能但是接口不匹配;
- Target 目标角色 定义了用户希望的接口;
- Adapter 适配器角色,实现了目标接口,实现的方法是:内部包含了一个Adaptee对象,通过调用Adaptee对象原有的方法实现功能。
//安卓充电线
public class AndroidChargeAdaptee
{
public void AndroidCharge()
{
Console.WriteLine("安卓充电线充电");
}
}
//苹果手机的充电接口
public interface IPhoneCharge
{
void PhoneCharge();
}
//转接头
public class PhoneChargeAdapter : IPhoneCharge
{
//在Adapter中封装了一个Adaptee对象,这个对象才是实现功能的对象
private AndroidChargeAdaptee android = new AndroidChargeAdaptee();
public void PhoneCharge()
{
android.AndroidCharge();
}
}
代码语言:javascript复制IPhoneCharge phoneCharge=new PhoneChargeAdapter();
phoneCharge.PhoneCharge();