适配器模式【java版】
使用场景: 接口转换
一、对象适配器(优先选用)
优选的原因:多用聚合,少用继承
原始接口类:
public class Adaptee {
public void standardRequest(){
System.out.println("这是原始标准接口!");
}
}
目标接口:
public interface Target {
public void newRequest();
}
适配器类:
//聚合的方式,适配器类中“原始接口对象”作为其成员对象
public class Adapter implements Target {
public Adapter(Adaptee apt){
this.apt=apt;
}
//实现新接口中的方法
public void newRequest() {
System.out.println("调用老接口之前进行一些预处理");
this.apt.standardRequest();//开始调用老接口
}
private Adaptee apt=null;
}
测试:
public class Main {
public static void main(String[] args) {
System.out.println("测试对象适配器。。。");
//创建“原始接口类对象”和“适配器对象”
Adaptee theAdaptee=new Adaptee();
Target theTarget=new Adapter(theAdaptee);
//调用新接口
theTarget.newRequest();
}
}
运行结果:
二、类适配器
原始接口类:
public class Adaptee {
public void standardRequest(){
System.out.println("这是原始标准接口!");
}
}
目标接口:
public interface Target {
public void newRequest();
}
适配器类:
//继承的方式,“原始接口类”中的方法通过继承得到,并在新接口的方法中被调用
public class Adapter extends Adaptee implements Target {
//实现新接口中的方法
public void newRequest() {
System.out.println("调用老接口之前进行一些预处理");
super.standardRequest();
}
}
测试:
public class Main {
public static void main(String[] args) {
System.out.println("测试类适配器");
//创建适配器对象
Target theTarget=new Adapter();
//调用新接口
theTarget.newRequest();
}
}
运行结果: