1. 介绍
1.1 定义
将一个类的接口转换成客户期望的另一个接口
应用实例: 电源适配器
1.2 主要作用
使原本接口不兼容的类可以一起工作
1.3 形式
适配器模式的形式分为:类的适配器模式 & 对象的适配器模式
2.模式原理
image.pngpublic interface Target {
void request();
}
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("concreteTarget现有目标方法");
}
}
public class Adaptee {
public void adapteeRequest() {
System.out.println("被适配者的方法");
}
}
2.1类的适配器模式
继承Adaptee 被适配者
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
//...
super.adapteeRequest();
//...
}
}
2.2对象的适配器模式
组合Adaptee 被适配者
public class Adapter implements Target{
private Adaptee adaptee = new Adaptee();
@Override
public void request() {
//...
adaptee.adapteeRequest();
//...
}
}
客户端调用
public class Test {
public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();
Target adapterTarget = new Adapter();
adapterTarget.request();
}
}
结果输出
concreteTarget目标方法
被适配者的方法
3.实例讲解
接下来我用一个实例来对代理模式进行更深一步的介绍。
实例概况 220v交流电通过电源适配器输出5v直流电
步骤1:创建Target 接口 5v直流电
public interface DC5 {
int outputDC5V();
}
步骤2:创建Adaptee被适配者 220v交流电
public class AC220 {
public int outputAC220V(){
int output = 220;
System.out.println("输出交流电"+output+"V");
return output;
}
}
步骤3:创建Adapter 电源适配器
//使用对象的适配器模式
public class PowerAdapter implements DC5{
private AC220 ac220 = new AC220();
@Override
public int outputDC5V() {
int adapterInput = ac220.outputAC220V();
//变压器...
int adapterOutput = adapterInput/44;
System.out.println("使用PowerAdapter输入AC:"+adapterInput+"V"+"输出DC:"+adapterOutput+"V");
return adapterOutput;
}
}
步骤4:客户端调用
public class Test {
public static void main(String[] args) {
DC5 dc5 = new PowerAdapter();
dc5.outputDC5V();
}
}
结果输出
输出交流电220V
使用PowerAdapter输入AC:220V 输出DC:5V
网友评论