设计模式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);
}
}