在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
实例背景 -- Computer 类的方法只能读取SDCard,不能读取FDCard,则创建适配器使Computer可以读取FDCard
类型适配器
实现SDCard接口,集成FDCard实现类
public class Computer {
public void read(SDCard sdCard) {
sdCard.readSD();
}
}
public interface SDCard {
void readSD();
}
public class SDCardImpl implements SDCard{
@Override
public void readSD() {
System.out.println("read msg from SD Card");
}
}
public interface FDCard {
void readFD();
}
public class FDCardImpl implements FDCard{
@Override
public void readFD() {
System.out.println("read msg from FD Card");
}
}
/***
* 适配器类
*/
public class FD2SDAdapter extends FDCardImpl implements SDCard{
@Override
public void readSD() {
this.readFD();
}
}
public static void main(String[] args) {
Computer computer = new Computer();
computer.read(new SDCardImpl());
computer.read(new FD2SDAdapter());
}
通过FD2SDAdapter,就可以使Computer读取FDcard
对象适配器
不使用多继承或继承的方式,而是使用直接关联,或者称为委托的方式
public class FD22SDAdapter implements SDCard {
private FDCard fdCard;
public FD22SDAdapter(FDCard fdCard) {
this.fdCard = fdCard;
}
@Override
public void readSD() {
fdCard.readFD();
}
}
总结
推荐使用“对象是配置”