23种设计模式-适配器模式

Posted yppaopao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了23种设计模式-适配器模式相关的知识,希望对你有一定的参考价值。

技术图片

 

 实例分析: USB接口的电脑 通过转换器 将普通网线输入转换成USB接口输入上网。

 需要一个网线类

Adaptee

package factory.adapter;
//要被适配的类: 网线
public class Adaptee {

    public void request(){
        System.out.println("拨号连接上网");
    }
}

一个适配器类   应用继承 属于类适配器

package factory.adapter;
//1,继承      (类适配器)
//2,组合      (对象适配器)

//真正的适配器~,需要连接USB,连接网线~
public class Adapter extends Adaptee implements NetToUsb {
    @Override
    public void handleRequest() {
        super.request();//可以上网了
    }
}

一个USB接口类

package factory.adapter;
//接口 转换器的抽象实现
public interface NetToUsb {

    //作用:处理请求, 网线=>usb
   public void  handleRequest();
}

一个电脑类

package factory.adapter;
//客户端类: 想上网,插不上网线·
public class Computer {
    //我们的电脑需要连接上我们的转接器才可以上网
    public  void  net(NetToUsb adapter){

    //上网的具体实现~, 找一个转接头
    adapter.handleRequest();

    }


    public static void main(String[] args) {
        //电脑,适配器,网线
        Computer computer = new Computer();
        Adaptee adaptee = new Adaptee();//网线
      Adapter adapter = new Adapter();//转接器

 
        computer.net(adapter);

    }
}

另一种方法:  组合的方式实现

package factory.adapter;
//1,继承      (类适配器)


//真正的适配器~,需要连接USB,连接网线~
public class Adapter2 implements NetToUsb {
    //2,组合      (对象适配器)
    private Adaptee adaptee;

    public Adapter2(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void handleRequest() {
        adaptee.request();//可以上网了
    }
}

修改computer类

package factory.adapter;
//客户端类: 想上网,插不上网线·
public class Computer {
    //我们的电脑需要连接上我们的转接器才可以上网
    public  void  net(NetToUsb adapter){

    //上网的具体实现~, 找一个转接头
    adapter.handleRequest();

    }


    public static void main(String[] args) {
        //电脑,适配器,网线
        Computer computer = new Computer();
        Adaptee adaptee = new Adaptee();//网线
       // Adapter adapter = new Adapter();//转接器

        Adapter2 adapter2 = new Adapter2(adaptee);
        computer.net(adapter2);

    }
}

例图

技术图片

 

以上是关于23种设计模式-适配器模式的主要内容,如果未能解决你的问题,请参考以下文章

Java中23种设计模式(附代码样例)

23种设计模式总览

23种设计模式介绍---- 结构型模式

23种状态模式的理解

GoF 23 种设计模式之适配器模式和桥接模式

GoF 23 种设计模式之适配器模式和桥接模式