找回密码
 立即注册
首页 业界区 业界 掌握设计模式--适配器模式

掌握设计模式--适配器模式

哎禹供 2025-6-6 14:12:18
适配器模式(Adapter Pattern)

适配器模式是一种结构型设计模式,用于将一种接口转换为客户端期望的另一个接口,使得原本因接口不兼容而无法一起工作的类可以协同工作。适配器为中间者,连接着两个互不相容的接口,从而实现接口的适配。
核心思想:在不改变现有代码的情况下,将一个类的接口转换为客户端期望的接口。
主要组成部分

适配器模式包含以下主要角色:

  • 目标接口(Target):定义客户端使用的接口;
  • 需要适配的类(Adaptee):一个现有的接口或类,其接口与目标接口不兼容;
  • 适配器(Adapter):一个中间层,连接目标接口和需要适配的类,实现接口的转换;
  • 客户端(Client):通过目标接口使用适配器的功能。
一句话概括适配器组成之间的关系:
一般情况下,适配器是目标接口的具体实现类,实现的具体功能是通过调用需要适配的类的功能来完成。
适配器模式的两种实现方式

类适配器(基于继承)

通过继承需要适配的类,并实现目标接口。(多用于单继承语言,例如Java)
对象适配器(基于组合)

通过组合一个需要适配的类的实例,并实现目标接口。(推荐使用,灵活性更高)
案例实现

场景为:插头适配器
假设你有一个旧接口为两孔插头,现在需要适配为新的电源插头接口(三孔插头)。
目标接口--适配器--需要适配的类,这三者的关系为客户端要使用适配类(三孔插头),但是无法直接插入两孔插头的插座,需要先插入适配器,然后再将适配器插入两孔插头,所以他们的连接关系为:需要适配的类>>>适配器>>>目标接口。
案例类图

类适配的类图(基于继承)
1.png

对象适配的类图(基于组合)
2.png

目标接口(Target)

两孔插头
  1. public interface TwoPinPlug {
  2.     void connect();
  3. }
复制代码
被适配类(Adaptee)

三孔插头--接口
  1. public interface ThreePinPlug {
  2.     void connectWithThreePins();
  3. }
复制代码
三孔插头--具体实现类
  1. public class ThreePinPlugImpl implements ThreePinPlug {
  2.     public void connectWithThreePins() {
  3.         System.out.println("连接三孔插头");
  4.     }
  5. }
复制代码
类适配器(Adapter - 继承)

通过继承来实现的适配器
  1. public class PlugAdapter extends ThreePinPlug implements TwoPinPlug {
  2.     @Override
  3.     public void connect() {
  4.         super.connectWithThreePins(); // 转换三孔插头的接口为两孔插头接口
  5.     }
  6. }
复制代码
对象适配器(Adapter - 组合)

通过组合的方式来实现的适配器
  1. public class PlugAdapter2 implements TwoPinPlug {
  2.     private ThreePinPlug threePinPlug;
  3.     public PlugAdapter2(ThreePinPlug threePinPlug) {
  4.         this.threePinPlug = threePinPlug;
  5.     }
  6.     @Override
  7.     public void connect() {
  8.         threePinPlug.connectWithThreePins(); // 转换三孔插头的接口为两孔插头接口
  9.     }
  10. }
复制代码
客户端代码
  1. public class AdapterPatternDemo {
  2.     public static void main(String[] args) {
  3.         // 使用类适配器
  4.         TwoPinPlug adapter1 = new PlugAdapter();
  5.         adapter1.connect();
  6.         // 使用对象适配器
  7.         ThreePinPlug threePinPlug = new ThreePinPlugImpl();
  8.         TwoPinPlug adapter2 = new PlugAdapter2(threePinPlug);
  9.         adapter2.connect();
  10.     }
  11. }
复制代码
执行结果
连接三孔插头
连接三孔插头
总结

适配器模式通过引入中间层(适配器),将不兼容的接口转换为客户端需要的接口,实现系统的兼容性和灵活性。
适用场景:当现有类的接口与需求接口不兼容时;当需要将多个不同接口的类统一为同一个接口时;当不修改已有代码且需要与新需求兼容时。
3.gif

什么是设计模式?
设计模式--原型模式及其编程思想
掌握设计模式--单例模式及其思想​
掌握设计模式--生成器模式
掌握设计模式--简单工厂模式
掌握设计模式--工厂方法模式
掌握设计模式--抽象工厂模式
掌握设计模式--装饰模式
掌握设计模式--组合模式
超实用的SpringAOP实战之日志记录
2023年下半年软考考试重磅消息
通过软考后却领取不到实体证书?
计算机算法设计与分析(第5版)
Java全栈学习路线、学习资源和面试题一条龙
软考证书=职称证书?
软考中级--软件设计师毫无保留的备考分享

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册