适配器模式Adapter
什么是适配器模式?
将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作
模式中结构(以电脑和键盘为例)
- 目标接口Target:客户所期待的接口,目标可以是具体或抽象的类,也可以是接口(USB)
- 需要适配的类Adaptee:需要适配的类或适配者类 (键盘)
- 适配器Adapter:通过包装一个需要适配的对象,把原接口转换成目标接口 (需要的产品)
- Client:客户电脑
结构图
代码
public interface Target {
void request();
}
/**
* 被适配的类:键盘
*/
public class Adaptee {
public void specialRequest(){
System.out.println("连接成功可以用");
}
}
/**
* 适配器,本身也是Target
* 类适配器方式
*/
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
super.specialRequest();
}
}
/**
* 使用组合的方式与被适合的对象进行组合
*/
public class Adapter2 implements Target {
private Adaptee adaptee ;
public Adapter2(Adaptee adaptee){
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specialRequest();
}
}
/**
* 笔记本
*/
public class Client {
public static void main(String[] args){
Client client = new Client();
Target target = new Adapter();
client.handler(target);
Adaptee adaptee = new Adaptee();
Target target2 = new Adapter2(adaptee);
client.handler(target2);
}
public void handler(Target target){
target.request();
}
}
jdk场景
- java.io.inputStreamReader(InputStream)
- java.io.OutputStreamWriter(OutputStream)