设计模式-适配器模式

适配器模式

USB网线转换器
设计模式-适配器模式_第1张图片

要被适配的类–网线

public class Adaptee{
     
    public void request(){
     
        // 返回上网
    }
}

转接头口USB–接口

public interface NetToUSB{
     
    // 接口转换器的抽象实现
    // 作用:处理请求
    public void handleRequest();
}

转接头–实现类–真正的适配器

  1. 继承,类适配器模式
// 使用USB,连接网线
public class Adapter extends Adaptee implements NetToUSB{
     
    @override
    public void handleRequest(){
     
        super.request();  // 可以上网,使用接口实现类处理上网请求。
    }
}

2.组合(对象适配器)

// 使用USB,连接网线
public class Adapter1  implements NetToUSB{
     
    private Adaptee adaptee;
    
    public Adapter1(Adaptee adaptee){
     
        this.adaptee = adaptee;  // 可以给自定义的对象使用,热拔插式
    }
    
    @override
    public void handleRequest(){
     
        adaptee.request();  // 可以上网,使用接口实现类处理上网请求。
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XGZDQTXl-1620375461415)(E:\Markdown\JAVA\设计模式.assets\3-1Q1151046105A.gif)]

电脑类–客户端

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();  // 转接器
     Adapter1 adapter = new Adapter1(adaptee);  // 升级版转接器,传入自定义的网线
     compute.net(adapter);
 }

应用:

  • 存在一个与现在系统不匹配的必需类。旧系统升级
  • 转换流:InputStreamReader
  • 输入输出字节,字符流
  • GUI,Springboot

你可能感兴趣的:(设计模式)