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