个人对适配器模式的简单理解:假如有个插孔只支持双孔,现在来了一个电器是三孔的,要让这个三孔的电器也能用,就需要一个插盘来适配双孔和三孔。对应的:双孔和三孔就是具体的方法,插盘就是适配器。
适配器分为:类适配器模式 和 对象适配器模式
类适配器模式
原有的“双孔”
/**
* author:lcy
* since 2021/6/29 11:07
* * 现有的接口
*/
public class Adaptee {
public void sampleOperation1(){
System.out.println("原有接口");
}
}
用接口把“双孔”和“三孔”汇总一下
/**
* author:lcy
* since 2021/6/29 11:00
* 所期待的接口
*/
public interface Target {
void sampleOperation1();
void sampleOperation2();
}
适配的具体实现
/**
* author:lcy
* since 2021/6/29 11:00
* 使用一个适配器来适配现有的接口,增加新的接口
*/
public class Adapter extends Adaptee implements Target{
@Override
public void sampleOperation2() {
//因为sampleOperation1已经是现有的接口了
//所以这里重载sampleOperation2不需要重载sampleOperation1
System.out.println("适配器增加的新接口");
}
}
对象适配器模式
原有接口
/**
* author:lcy
* since 2021/6/29 11:07
* * 现有的接口
*/
public class Adaptee {
public void sampleOperation1(){
System.out.println("原有接口");
}
}
适配器
/**
* author:lcy
* since 2021/6/29 11:08
* 使用适配器,sampleOperation1方法用的是原有的,sampleOperation2用的是本适配器的
*/
public class Adapter {
private Adaptee adaptee;
public void setAdaptee(Adaptee adaptee) {
this.adaptee = adaptee;
}
//用的是原有的方法
public void sampleOperation1(){
adaptee.sampleOperation1();
}
//用的是适配器新增的方法
public void sampleOperation2(){
System.out.println("适配器新增的接口");
}
}