适配器模式Adapter

分析&回答


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

两个成熟的类需要通信,但是接口不同,由于开闭原则,我们不能去修改这两个类的接口,所以就需要一个适配器来完成衔接过程。

变压器就是很好的适配器模式的例子。用电设备所需要的电压是9V,但是电线上的电压却是220V的,我们不能去更改它们的电压输入或输出,所以我们用到了变压器。变压器是220V的输入,9V的输出。这样就可以将200V的电压变为9V的电压,用变压器将用电设备连接到了电线上工作了。

上面图中,都是Client端需要Request这个方法,但是Adaptee没有这个方法,所以就需要提供一个中间件/包装类(Wrapper)Adapter类来衔接。不同的是图(一)中Adapter继承自Adaptee,而第二幅图是在Adapter类中包装了一个Adaptee的实例。这就决定了图(一)讲的是“类的结构模式”,而图(二)中则是“对象的结构模式”。

实例代码讲解:

/**
 * 目标接口,客户所期待的接口。
  */    
public class Target{
    public virtual void Request(){
        Console.Write("我是本系统中的普通请求.");
    }

}

/**
 * 适配器,匹配2个接口不一致的类 
 */
public class Adapter:Target{
    private Adaptee adaptee = new Adaptee();
    public void Request(){
        adaptee.SpecificRequest();
    }
}

/**
 * 源接口,与客户期待的接口不一致 
 */
public class Adaptee(){
    public void SpecificRequest(){
        Console.Write("我是原有的真实调用的系统");
    }
}

/**
 * client端
 * @param args
 */
static void Main(string[] args)
{
    Target t = new Adapter();
    t.Request();

    Console.ReadLine();
}

喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵呜刷题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值