适配器模式(Adapter Pattern)又称为变压器模式,是 GoF 的 23 种设计模式中的一种结构型设计模式。适配器模式 的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作 ~ 本篇内容包括:关于适配器模式、适配器的实现 Demo
适配器模式(Adapter Pattern)又称为变压器模式,是 GoF 的 23 种设计模式中的一种结构型设计模式。
适配器模式 的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作
适配器模式一般包含三种角色:
public class Adapter extends Adaptee implements Target{
@Override
public void request() {
//...一些操作...
super.adapteeRequest();
//...一些操作...
}
}
# 适配器模式优点
# 适配器模式缺点
# 使用场景
我们新买了一个华为 mate50 手机,但是来朋友家做客没携带充电器,朋友家只有 Ios 的充电器,所以我们需要让 Ios 充电接口支持我们的 mate50 的 Type-C 充电。
# TypeCharger 目标(Target)
/**
* Type-c充电接口
**/
public interface TypecCharger {
/**
* 充电方法
*/
void typecCharger();
}
/**
* Type-c充电
**/
public class Typec implements TypecCharger {
@Override
public void typecCharger() {
System.out.println("Type-c接口充电");
}
}
# IosCharger 被适配者(Adaptee)
/**
* Ios充电接口
**/
public interface IosCharger {
/**
* 充电方法
*/
void iosCharger();
}
/**
* Ios充电
**/
public class Ios implements IosCharger {
@Override
public void iosCharger() {
System.out.println("Ios接口充电");
}
}
# FriendHome
/**
* 在朋友家充电(只有Ios充电口)
**/
public class FriendHome {
private IosCharger iosCharger;
public FriendHome(IosCharger iosCharge) {
this.iosCharger = iosCharge;
}
/**
* 充电
*/
public void charge(){
this.iosCharger.iosCharger();
}
}
# ChargerAdapter 适配器(方式一)
/**
* 适配器接口
**/
public class ChargerAdapter implements IosCharger {
private TypecCharger typec;
public ChargerAdapter(Typec typec) {
this.typec = typec;
}
@Override
public void iosCharger() {
typec.typecCharger();
}
}
# ChargerAdapter 适配器(方式二)
public class ChargerAdapter extends Typec implements IosCharger {
@Override
public void iosCharger() {
this.typecCharger();
}
}
public class Client {
public static void main(String[] args) {
// 原本只有 Ios 充电口
FriendHome home = new FriendHome(new Ios());
home.charge();
System.out.println("*******************");
// 使用适配器之后旅馆支持ios充电了
ChargerAdapter chargerAdapter = new ChargerAdapter(new Typec());
home = new FriendHome(chargerAdapter);
home.charge();
}
}