胖蔡说技术
随便扯扯

Java实现适配器模式

适配器模式(Adapter Pattern)归属于结构型设计模式的一种,其设计思想是:将一个类的接口适配成客户所期待的,其实现方式是将一个类的接口包裹在一个已存在的类中,使得原本由于结构不兼容而不能在一起工作的类一起工作。

适配器类型

适配器模式主要可以如下三个类型:

  • 类适配器:对应适配器继承适配者
  • 对象适配器:在适配器的构造器中添加适配者的参数,在使用适配器时传入适配者,就能够做到灵活使用。

由于java并不支持多继承,已次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口,可通过接口配合类的方式实现多继承。所以我们通常都是使用对象适配模式实现适配器模式。

实现

适配器模式实现之前,我们先来了解下实现一个适配器模式,需要创建哪些角色 。一般的,适配中的角色主要有如下四类:

  • Target:定义客户端所需的接口。
  • Adapter:适配器类,实现了 Target 接口,并且包含一个 Adaptee 类型的对象。
  • Adaptee:定义了一个已有的接口,这个接口需要适配。
  • Client:使用 Target 接口的对象。

根据上述四个角色,我们来了解下适配器实现的具体代码:


//Target:网线
public class Reticle {

    public void request(){
        System.out.println("插上网线上网");
    }
}

//Adaptee:适配器接口
public interface NetToUSB {

    //作用:处理请求 将网线=>USB
    void handleRequest();
}


// Client:使用者
public class Computer {

    //进行上网
    public void net(NetToUSB adapter){
        //调用适配器的方法
        adapter.handleRequest();
    }
}


//Adapter:类适配器实现
public class Adapter extends Reticle implements NetToUSB{

    @Override
    public void handleRequest() {
        super.request();
    }
}

//Adapter:对象适配器实现
public class Adapter2 implements NetToUSB{

    private Reticle reticle;

    //传入指定的适配者
    public Adapter2(Reticle reticle){
        this.reticle = reticle;
    }

    @Override
    public void handleRequest() {
        reticle.request();
    }
}


//②测试组合方式的适配器
@Test
public void test01(){
    Computer computer = new Computer();//电脑
    Reticle reticle = new Reticle();//网线
    //将网线传入到适配器中(组合方式)
    NetToUSB adapter = new Adapter2(reticle);
    computer.net(adapter);
}





赞(0) 打赏
转载请附上原文出处链接:胖蔡叨叨叨 » Java实现适配器模式
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏