结构型模式——适配器模式
适配器模式概述:
将一个类的接口转换成业务层代码需要的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
适配器模式结构:
适配器模式包括以下主要角色:
目标接口:当前系统业务所期望的接口,他可以是抽象类或者接口。
适配者类:他是被访问和适配的现存的组件库中的组件接口。
适配器类:他是一个转换器,通过继承或者引用是陪着的对象,把适配者接口转换成目标接口,让客户按照目标接口的格式访问适配者。
适配器模式的实现
适配器模式分为类适配器模式和对象适配器模式。前者类与类之间的耦合度比较高,切要求了解现有组件库汇总的相关组件的内部结构,所以应用比较少。
类适配器模式
定义一个适配器类来实现当前系统的业务接口,同时有继承现有组件库中已经存在的组件。以下述事例为例,适配器类是一个TFCardImpl子类,并且实现了SDCard接口,即具有读取SDCard功能的电脑可以读取这个子类。
/**
* SDCard是目标接口
*/
public interface SDCard {
String readSD();
void writeSD(String msg);
}
/**
* TFCardImpl类是适配者类
*/
public interface TFCard {
String readTF();
void writeTF(String msg);
}
public class TFCardImpl implements TFCard{
@Override
public String readTF() {
String msg = "tf card read msg : hello word tf card";
return msg;
}
@Override
public void writeTF(String msg) {
System.out.println("tf card write a msg:" + msg);
}
}
/**
* SDAdapterTF是适配器类
*/
public class SDAdapterTF extends TFCardImpl implements SDCard{
@Override
public String readSD() {
System.out.println("adapter read tf card");
return readTF();
}
@Override
public void writeSD(String msg) {
System.out.println("adaptor write tf card");
writeTF(msg);
}
}
对象适配器模式
对象适配器模式可采用将现有组件库中已经实现的组件引入适配器类中,该类实现当前系统的业务接口。
/**
* SDAdapterTF是适配器类
*/
public class SDAdapterTF implements SDCard{
private TFCard tfCard;
public SDAdapterTF(TFCard tfCard){
this.tfCard = tfCard;
}
@Override
public String readSD() {
return tfCard.readTF();
}
@Override
public void writeSD(String msg) {
tfCard.writeTF();
}
}
适配器模式的应用实例:
在jdk源码中,Reader(字符流)、InputStream(字节流)的转换就使用了适配器模式,借助InputStreamReader适配器
文章内容为个人学习总结,如有错误望指正。
参考链接https://www.bilibili.com/video/BV1Np4y1z7BU