设计模式(七)适配器模式


更多设计模式文章请阅读:

设计模式专栏

一、定义:

适配器模式是把一个类的接口变化成客户端所期待的另一种接口,从而使原本因接口不匹配的而无法在一起工作的两个类能够在一起进行工作

二、使用场景:

1.系统想用现有的类,而此类的接口不符合所期待的系统的需要,即不兼容
2.想建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类
3.需要统一输出的接口,但是输入类型不可预知情况

三、适配器模式分类:

3.1类适配器

在这里插入图片描述

Adapter 继承自Adaptee,从而实现适配和转化

Target : 目标角色,也就是所期待得到的接口
Adapter:适配角色,将不兼容的方法,适配目标角色需要的接口或者方法
Adaptee: 需要适配和转换的角色

简单示例

日常生活中电压为220V,但是手机充电电压为5V,这时候,就需要一个手机电源适配器,将220V的电压转为手机能用的5V电压,如下所示:

/**
 * des:adaptee角色,需要被装换的对象
 * author:onexzgj
 * time:2019/5/27
 */
public class Volt220 {
    public int getVolt220(){
        return 220;
    }
}
/**
 * Target对象,5V
 */
public interface FiveVolt {
    int getVolt5();
}
/**
 * des:Adapter对象
 * author:onexzgj
 * time:2019/5/27
 */
public class VoltAdapter extends Volt220 implements FiveVolt{
    @Override
    public int getVolt5() {
        return getVolt220()/44;
    }
}
public class Test {

    public static void main(String[] args){

        VoltAdapter adapter=new VoltAdapter();

        System.out.println("转化后的电压为 : " + adapter.getVolt5());
        //转化后的电压为 : 5
    }
}

3.2对象适配器

在这里插入图片描述

Adapter依赖Adaptee对象,即持有Adaptee的对象,从而实现适配和转化

Target : 目标角色,也就是所期待得到的接口
Adapter:适配角色,将不兼容的方法,适配目标角色需要的接口或者方法
Adaptee: 需要适配和转换的角色

简单示例
/**
 * Target对象,5V
 */
public interface FiveVolt {
    int getVolt5();
}

/**
 * des:adaptee角色,需要被装换的对象
 * author:onexzgj
 * time:2019/5/27
 */
public class Volt220 {
    public int getVolt220(){
        return 220;
    }
}
/**
 * des:适配器
 * author:onexzgj
 * time:2019/5/27
 */
public class VoltAdapter implements FiveVolt{

    private Volt220 mVolt220;

    public VoltAdapter(Volt220 volt220){
        this.mVolt220=volt220;
    }

    @Override
    public int getVolt5() {

        if (mVolt220!=null)
           return mVolt220.getVolt220()/44;
        return 220;
    }
}
public class Test {

    public static void main(String[] args){
        int volt5 = new VoltAdapter(new Volt220()).getVolt5();
        System.out.println(volt5);
    }
}

Target : 目标角色,也就是所期待得到的接口
Adapter:适配角色,将不兼容的方法,适配目标角色需要的接口或者方法
Adaptee: 需要适配和转换的角色

四、两种适配的比较

对象适配器是将要适配的对象直接传递到Adapter中,使用组合的方式实现接口的兼容,比类适配器灵活,另外一个好处是被适配对象中的方法不会暴露出来,用户学习成本较低,而类适配器继承被适配对象,则会暴露出被适配对象的方法。

五、适配器设计模式优点

更好的复用性,将现有类,通过适配器设计模式就可以让现有类功能更好的复用。
更好的扩展性,在原有类的基础上,增加了自己适配的方法,从而扩展了系统功能。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值