GoF23种设计模式之结构型模式之适配器模式


一、概述
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
二、适用性
1.你想使用一个已经存在的类,但是它的接口不符合你的要求的时候。
2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口肯不一定兼容的类)协同工作的时候。
3.你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口的时候。对象适配器可以适配它的父类接口。
三、参与者
1.Target:定义Client使用的与特定领域相关的接口。
2.Adaptee:定义一个已经存在的接口,该接口需要适配。
3.Adapter:对Adaptee接口与Target接口进行适配。
4.Client:与符合Target接口的对象协同。
四、类图

五、示例
Target
package cn.lynn.adapter;

public interface ICharger {

    public void chargeIPhone();
    
    public void chargeAndroid();

}
Adaptee
package cn.lynn.adapter;

public class IPhone {

    public void chargeIPhone() {
        System.out.println("支持IPhone手机充电!");
    }

}
Adapter
package cn.lynn.adapter;

public class Android implements ICharger {

    private IPhone iPhone;

    public Android(IPhone iPhone) {
        this.iPhone = iPhone;
    }

    @Override
    public void chargeIPhone() {
        iPhone.chargeIPhone();
    }

    @Override
    public void chargeAndroid() {
        System.out.println("支持Android手机充电!");
    }

}
Client
package cn.lynn.adapter;

public class Client {

    public static void main(String[] args) {
        ICharger charger = new Android(new IPhone());
        charger.chargeIPhone();
        charger.chargeAndroid();
    }

}
Result

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn