1、什么是适配器模式
适配器(Adapter)模式又叫做包装( Wrapper )模式,是由GOF提出的23种设计模式中的一种结构型设计模式,Adapter模式的设计意图:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
2、适配器模式的结构
·类的适配器模式(采用继承被适配类与实现目标接口)
·对象适配器模式(将被适配的类的实例组合到适配其中)
·接口适配器模式
代码解释:
类适配器模式
被适配器类
/**
* 被适配器类(已有的实现类,想要和新功能联系起来,继承即可)
*/
public class Adaptee {
public void Output(){
System.out.println("adaptee输出");
}
}
目标接口
public interface Target {
void Convert();
}
适配器类
/**
* 适配器类,继承被适配器方法,实现实现目标类方法。
*/
public class ConvertAdapter extends Adaptee implements Target {
@Override
public void Convert() {
this.Output();//可以调用被适配方法,实现转换
}
}
测试类适配器
/**
* 测试适配器模式
*/
public class StartConvert {
public static void main(String[] args) {
Target target = new ConvertAdapter();//目标对象
target.Convert();
}
}
对象适配器
被适配器类
/**
* 被适配器类
*/
public class Adaptee {
public void Output(){
System.out.println("adaptee输出");
}
}
适配器:
/**
* 适配器类,实现实现目标类方法。
*/
public class ConvertAdapter implements Target{
private Adaptee adaptee;//引入被适配器对象组合
public ConvertAdapter(Adaptee adaptee){
super();
this.adaptee = adaptee;
}
@Override
public void Convert() {
adaptee.Output();
}
}
目标接口
public interface Target {
void Convert();
}
测试组合
/**
* 测试适配器模式
*/
public class StartConvert {
public static void main(String[] args) {
Target target = new ConvertAdapter(new Adaptee());//目标对象
target.Convert();
}
}
接口适配器
目标接口
public interface Target {
void Convert1();
void Convert2();
void Convert3();
void Convert4();
}
缺省适配器类(中间环节,用户没有必要实现接口所有的方法,这个类是折中操作)
/**
* 适配器类,实现实现目标类方法。
*/
public class ConvertAdapter implements Target{
@Override
public void Convert1() {
System.out.println("空方法");
}
@Override
public void Convert2() {
System.out.println("空方法");
}
@Override
public void Convert3() {
System.out.println("空方法");
}
@Override
public void Convert4() {
System.out.println("空方法");
}
}
具体类
/**
* 客户类
*/
public class client1 extends ConvertAdapter{
public void Convert1() {
System.out.println("客户1方法");
}
}
参考
原文链接:https://blog.csdn.net/pengjunlee/article/details/52347644