java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java适配器模式

Java设计模式中的适配器模式

作者:Mu_Mu是一只小白

这篇文章主要介绍了Java设计模式中的适配器模式, 适配器模式是将一个类的接口适配成用户所期待的,一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中,需要的朋友可以参考下

适配器模式

将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

使用场景:

1)系统需要使用现有的类,但现有的类却不兼容。

2)需要建立一个可以重复使用的类,用于一些彼此关系不大的类,并易于扩展,以便于面对将来会出现的类。

3)需要一个统一的输出接口,但是输入类型却不可预知。

角色:

共有两类适配器模式:

模拟场景

家用电压为220v而手机充电器大概在5v,需要一个适配器去适配输入电压将220v变为5v。

类适配器模式

被适配的类

/**
 * @Description source类,需要被适配。
 */
public class AC220 {

    public int output220(){
       //输出220v电压
        return 220;
    }

}

目标类:

/**
 * @Description 目标类输出5v电压
 */
public interface OP5 {

      int output5v();
}

适配类:

public class PowerAdapter extends AC220 implements OP5{
    @Override
    public int output5v() {
        System.out.println("适配5v开始");
         int i = output220();
         return i/44;
    }
}

测试类:

  @Test
    public void testClassAdapt(){
        PowerAdapter powerAdapter = new PowerAdapter();
        System.out.println("适配后的输出:"+powerAdapter.output5v());
    }

测试结果

得到5v输入电压。

在这里插入图片描述

由于java是单继承,所以这种通过继承被适配类的方式不太灵活,而且继承会让适配器暴露出被适配类的方法。

对象适配器模式

只有适配器类不同

public class PowerAdapter2   implements OP5 {
    public PowerAdapter2(AC220 ac220) {
        this.ac220 = ac220;
    }

    private AC220 ac220;
    @Override
    public int output5v() {
        System.out.println("适配5v开始");
         int i = ac220.output220();
         return i/44;
    }
}

测试类:

  @Test
    public void testObjAdapt(){
        PowerAdapter2 powerAdapter = new PowerAdapter2(new AC220());
        System.out.println("适配后的输出:"+powerAdapter.output5v());
    }

测试结果

结果一致

在这里插入图片描述

这种模式和装饰者模式有点类似,但是装饰者是为了去扩展被装饰者的功能,并且使用者无法感觉到方法被装饰,适配器模式主要为了更好的兼容和扩展,使用者能感受到适配器的存在。

到此这篇关于Java设计模式中的适配器模式的文章就介绍到这了,更多相关Java适配器模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文