23种设计模式之适配器
适配器:就是个通过一个中间件转化,可以将不匹配的两件事整合到一起,把不匹配变的匹配。
图解
类适配器
类适配器通过适配器类继承目标对象的接口为适配器类提供目标对象,同时实现调用接口并重写调用方法,在重写的调用方法中再调用目标对象的方法。
代码
/**
* USB接口
*
*/
public interface USB {
public void USB();
}
/**
* typeC接口
*
*/
interface TypeC {
public void typeC();
}
/**
* typeC接口的实现类
*
*/
class TypeCImpl implements TypeC {
@Override
public void typeC() {
System.out.println("...C...接口...");
}
}
/**
* 适配器类
*
*/
class Adapter extends TypeCImpl implements USB {
@Override
public void USB() {
System.out.println("USB 转换成 TypeC 接口...");
typeC();
}
}
//类适配器_测试类代码
class MainTest {
public static void main(String[] args) {
USB adapter = new Adapter();
adapter.USB();
}
}
结果
对象适配器
对象适配器是通过适配器类的构造函数将目标对象作为属性添加到适配器类中,适配器类实现调用接口并重写调用方法,在重写的调用方法中再调用目标对象的方法。
代码
/**
* USB接口
*
*/
public interface USB {
public void USB();
}
/**
* typeC接口
*
*/
interface TypeC {
public void typeC();
}
/**
* typeC接口的实现类
*
*/
class TypeCImpl implements TypeC {
@Override
public void typeC() {
System.out.println("...C...接口...");
}
}
/**
*
* 对象类适配器
*/
class AdapterObj implements USB {
private TypeC typeC;
public AdapterObj(TypeC typeC) {
this.typeC = typeC;
}
@Override
public void USB() {
System.out.println("...obj...convers");
typeC.typeC();
}
}
// 测试类代码
class MainTest {
public static void main(String[] args) {
TypeC c = new TypeCImpl();
USB adapterObj = new AdapterObj(c);
adapterObj.USB();
}
}
结果