适配器模式
模式定义
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
适配器模式类图
对象适配器
/**
* 对象适配器
*/
public class ObjectAdapter {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target target = new Adapter(adaptee);
target.output5V();
}
}
/**
* 被适配者
*/
class Adaptee{
/**
* 输出220V电压
* @return
*/
public int output220V(){
return 220;
}
}
/**
* 目标接口
*/
interface Target {
/**
* 输出5V电压
* @return
*/
int output5V();
}
/**
* 适配器
*/
class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public int output5V() {
//调用目标对象的处理逻辑
int i = adaptee.output220V();
System.out.println("原始的电压为:"+i+"V适配以后的电压为:"+5+"V");
return 5;
}
}
类适配器
public class ClassAdapter {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.output5V();
}
}
/**
* 被适配者
*/
class Adaptee{
public int output220V(){
return 220;
}
}
interface Target{
/**
* 输出5V电压
* @return
*/
int output5V();
}
class Adapter extends Adaptee implements Target{
@Override
public int output5V() {
int i = output220V();
System.out.println("原始的电压为:"+i+"V适配以后的电压为:"+5+"V");
return 5;
}
}
应用场景
- 当你希望使用某些现有类,但其接口与您的其他代码不兼容时,请使用适配器模式。
- 当你希望重用几个现有的子类,这些子类缺少一些不能添加到父类中的公共功能时,请使用该模式。