设计模式7——适配器模式

代码实现:

package com.ghl.adapter;

/**
 * @ProjectName DesignPattern
 * @ClassName Adapter
 * @Date 2020/8/27 20:07
 * @Author gaohengli
 * @Version 1.0
 */
//适配器模式
//要被适配的类
public class Adapter {

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

package com.ghl.adapter;

/**
 * @ProjectName DesignPattern
 * @ClassName NetToUsb
 * @Date 2020/8/27 20:12
 * @Author gaohengli
 * @Version 1.0
 */
//接口转换器的抽象实现
public interface NetToUsb {

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

类适配器

package com.ghl.adapter;

/**
 * @ProjectName DesignPattern
 * @ClassName TrueAdapter
 * @Date 2020/8/27 20:14
 * @Author gaohengli
 * @Version 1.0
 */
//1.继承(类适配器,单继承)
//2.组合(对象适配器,常用)

//真正的适配器,连接USB,连接网线
public class TrueAdapter extends Adapter implements NetToUsb{

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

对象适配器

package com.ghl.adapter;

/**
 * @ProjectName DesignPattern
 * @ClassName TrueAdapter2
 * @Date 2020/8/27 20:31
 * @Author gaohengli
 * @Version 1.0
 */

//2.组合(对象适配器,常用)
public class TrueAdapter2 implements NetToUsb {

    private Adapter adapter;

    public TrueAdapter2(Adapter adapter) {
        this.adapter = adapter;
    }

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

package com.ghl.adapter;

/**
 * @ProjectName DesignPattern
 * @ClassName Computer
 * @Date 2020/8/27 20:10
 * @Author gaohengli
 * @Version 1.0
 */
//客户端类:想上网,插不上网线
public class Computer {

    //连接转接口
    public void net(NetToUsb adapter){
        //上网的具体实现,需要一个转接头
        adapter.handleRequest();
    }

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

        Adapter adapter = new Adapter();//网线
        NetToUsb trueAdapter = new TrueAdapter2(adapter);//适配器

        computer.net(trueAdapter);
    }
}