您的位置:首页 > 科技 > IT业 > 珠海响应式网站制作_cdn资源访问出现问题怎么办_北京seo专员_全球搜索引擎网站

珠海响应式网站制作_cdn资源访问出现问题怎么办_北京seo专员_全球搜索引擎网站

2025/3/10 19:35:43 来源:https://blog.csdn.net/weixin_44259212/article/details/146077854  浏览:    关键词:珠海响应式网站制作_cdn资源访问出现问题怎么办_北京seo专员_全球搜索引擎网站
珠海响应式网站制作_cdn资源访问出现问题怎么办_北京seo专员_全球搜索引擎网站

Java 设计模式之适配器模式教程

1. 适配器模式简介

1.1 什么是适配器模式?

适配器模式(Adapter Pattern)是一种结构型设计模式,用于解决接口不兼容的问题。它的主要作用是将一个类的接口转换成客户端期望的接口,使原本因接口不匹配而无法一起工作的类能够协同工作。

1.2 适用场景

复用现有类,但接口不兼容
使用第三方库,但方法不匹配
统一多个类的接口

2. 适配器模式的三种实现方式

适配器模式有三种常见实现方式:

类适配器模式(基于继承)
对象适配器模式(基于组合)
接口适配器模式(基于抽象类)

3. 类适配器模式

3.1 结构

Target(目标接口):客户端期望使用的接口
Adaptee(被适配者):已有的不兼容接口
Adapter(适配器):继承 Adaptee 并实现 Target,进行接口转换

3.2 UML 图

       ┌───────────┐│   Target  │  (目标接口)└───────────┘▲│┌───────────┐│  Adapter  │  (适配器)└───────────┘▲│┌───────────┐│  Adaptee  │  (被适配者)└───────────┘

3.3 代码示例

// 1. 目标接口(客户端期望的接口)
interface Target {void request();
}// 2. 被适配者(已有类,接口不兼容)
class Adaptee {void specificRequest() {System.out.println("被适配者的方法调用");}
}// 3. 适配器(继承 Adaptee 并实现 Target)
class Adapter extends Adaptee implements Target {@Overridepublic void request() {specificRequest(); // 适配器将 request() 映射到 specificRequest()}
}// 4. 客户端
public class ClassAdapterDemo {public static void main(String[] args) {Target target = new Adapter(); // 使用适配器target.request(); // 输出:被适配者的方法调用}
}

3.4 适用场景

✅ 适用于:适配器和被适配者是同一类层级,因为适配器需要继承被适配者。
❌ 缺点:无法适配多个类,因为 Java 不支持多继承。

4. 对象适配器模式

4.1 结构

对象适配器模式采用 组合(而不是继承),适配器持有 Adaptee 的实例,从而调用其方法。

4.2 UML 图

       ┌───────────┐│   Target  │  (目标接口)└───────────┘▲│┌───────────┐│  Adapter  │  (适配器)└───────────┘│┌──────┴──────┐│  Adaptee    │  (被适配者)└─────────────┘

4.3 代码示例

// 1. 目标接口(客户端期望的接口)
interface Target {void request();
}// 2. 被适配者(已有类,接口不兼容)
class Adaptee {void specificRequest() {System.out.println("被适配者的方法调用");}
}// 3. 适配器(对象适配器,使用组合方式)
class ObjectAdapter implements Target {private final Adaptee adaptee;public ObjectAdapter(Adaptee adaptee) {this.adaptee = adaptee;}@Overridepublic void request() {adaptee.specificRequest(); // 委托给被适配者的方法}
}// 4. 客户端
public class ObjectAdapterDemo {public static void main(String[] args) {Adaptee adaptee = new Adaptee();Target target = new ObjectAdapter(adaptee); // 适配器target.request(); // 输出:被适配者的方法调用}
}

4.4 适用场景

✅ 适用于:希望适配多个不同的类(组合可以支持多个 Adaptee)。
✅ 优点:不需要修改 Adaptee 代码,更符合开闭原则。
❌ 缺点:比类适配器稍复杂,需要额外创建适配器实例。

5. 接口适配器模式

5.1 结构

接口适配器模式适用于接口有多个方法,但子类只需实现部分方法。通过抽象类提供默认实现,子类只需覆盖需要的方法。

5.2 代码示例

// 1. 目标接口(含多个方法)
interface MultiTarget {void methodA();void methodB();void methodC();
}// 2. 抽象适配器(提供默认实现)
abstract class AbstractAdapter implements MultiTarget {@Overridepublic void methodA() {}@Overridepublic void methodB() {}@Overridepublic void methodC() {}
}// 3. 具体适配器(只实现 methodA)
class ConcreteAdapter extends AbstractAdapter {@Overridepublic void methodA() {System.out.println("实现 methodA");}
}// 4. 客户端
public class InterfaceAdapterDemo {public static void main(String[] args) {MultiTarget target = new ConcreteAdapter();target.methodA(); // 输出:实现 methodA}
}

5.3 适用场景

✅ 适用于:接口有多个方法,但子类只需实现部分。
✅ 优点:避免子类必须实现所有方法,提高灵活性。
❌ 缺点:适用于接口较大的场景,如果接口方法较少,直接实现即可。

6. 适配器模式总结

在这里插入图片描述

7. 总结

适配器模式是 Java 设计模式中最常见的模式之一,主要用于接口不兼容的情况。在不同场景下,选择合适的适配器模式可以提高代码复用性,减少修改成本,符合开闭原则。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com