JAVA设计模式------(1)适配器模式
目的
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作。
理解
可以想象成一个国标的插头,结果插座是德标的,这会想要使用这个插座,就需要一个德标转国标的适配器,那么这个适配器 需要继承 德标(源角色)能够充电的能力(或者其他能力)吧,还要具备转换为国标(目标角色)的能力,那国标就是新需求,需要实现 的接口。
具体而言,适配器具备源角色的功能,又能扩展目标角色的功能。
实现
源角色:
java
package cn.sh.designepattern.example02;
/**
* @Author song
* @Version 0.0.1
* @Date 2025/4/19 19:55
* @Contact [email protected]
*/
public class OuBiao {
public void chargeOuBiao(){
System.out.println("欧标充电器充电");
}
}
目标角色:
java
package cn.sh.designepattern.example02;
/**
* @Author song
* @Version 0.0.1
* @Date 2025/4/19 19:55
* @Contact [email protected]
*/
public interface GuoBiao {
public void chargeGuoBiao();
}
适配器:
java
package cn.sh.designepattern.example02;
/**
* @Author song
* @Version 0.0.1
* @Date 2025/4/19 19:56
* @Contact [email protected]
*/
public class ChargerAdapter extends OuBiao implements GuoBiao{
@Override
public void chargeGuoBiao() {
super.chargeOuBiao();
System.out.println("国标充电");
}
public static void main(String[] args) {
GuoBiao guoBiao = new ChargerAdapter();
guoBiao.chargeGuoBiao();
}
}
优势
对于已经投产的系统功能进行扩展,需要使用已有类,但是这个类不符合系统重的接口,则可以使用适配器模型,将这个类进行转换,转换成符合系统接口、可以使用的类。
另外适配可以重写一些被适配类的行为,增强其功能或者修改部分功能。