说说你对适配器模式的理解?
2 个回答
我依旧待人真诚,但不寄予厚望。姜尚# 适配器模式 ## 定义 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表 示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同 工作  ## 类适配器 ### 定义 适配器继承适配对象,并实现适配目标所有的方法, ### 类图  Java是单继承机制 ### 代码演示 #### 国标接口(适配目标) ``` package com.lglbc.adapter.ClassAdapter; public interface NationalStandard { void use(); } ``` #### 英标(适配对象) ``` package com.lglbc.adapter.ClassAdapter; public class EnglandStandard { public void userDefault(){ System.out.println("当前是英标"); } } ``` #### 适配器 ``` package com.lglbc.adapter.ClassAdapter; public class Adapter extends EnglandStandard implements NationalStandard { @Override public void use() { userDefault(); System.out.println("我已经给你转成国标使用"); } } ``` #### 客户端 ``` package com.lglbc.adapter.ClassAdapter; public class Client { public static void main(String[] args) { NationalStandard nationalStandard = new Adapter(); nationalStandard.use(); } } ``` ## 对象适配器 ### 定义 基于聚合原则,将适配的对象作为适配器的一个属性 ### 类图  ### 代码演示 ``` package com.lglbc.adapter.ObjectAdapter; public class Adapter implements NationalStandard { private EnglandStandard englandStandard = new EnglandStandard(); @Override public void use() { englandStandard.userDefault(); System.out.println("对象适配器:我已经给你转成国标使用"); } } ``` ## 接口适配器 ### 定义 适用于一个接口不想使用其所有的方法的情况 ### 代码演示 ``` public class Client { public static void main(String[] args) { new Player().listen(new AbsAdapterListener() { @Override public void start() { System.out.println("回调start方法"); } }); new Player().listen(new AbsAdapterListener() { @Override public void end() { System.out.println("回调end方法"); } }); } } ```发布于 2025-04-09 09:39 •IP属地 四川举报评论收藏
外界的声音都是参考,你不开心就不要参考。李青候适配器模式(Adapter Pattern)是一种结构型设计模式,它将一个类的接口转换成客户端所期望的另一个接口,从而使原本接口不兼容的类可以一起工作。适配器模式可以分为类适配器模式和对象适配器模式。 #### 优点 1. **兼容性强**:可以让两个原本不相关的类一起工作,起到中间转换的作用。 2. **灵活性高**:可以动态地改变适配器类,使得系统更加灵活和可扩展。 3. **不破坏原有系统**:在不修改原有类的情况下,通过适配器实现新的功能,符合开闭原则。 #### 缺点 1. **代码结构混乱**:过多地使用适配器容易导致代码结构混乱,例如看到调用的是A接口,内部实际调用的却是B接口的实现。 2. **增加系统复杂性**:适配器的增加可能会增加系统的复杂性和维护成本。 #### 生活中的例子 1. **插座适配器**:不同国家的电源插头和插座标准不同,插座适配器可以将一个国家的插头转换成另一个国家的插座标准,使电器可以在不同的国家使用。 2. **USB适配器**:USB适配器可以将不同接口类型的设备连接在一起,例如将Type-C接口转换为Micro-USB接口。 #### 示例代码 ##### 类适配器模式 ```java // 目标接口 interface Target { void request(); } // 被适配的类 class Adaptee { public void specificRequest() { System.out.println("调用适配者中的方法"); } } // 类适配器 class Adapter extends Adaptee implements Target { @Override public void request() { // 调用适配者中的方法 specificRequest(); } } // 测试类 public class AdapterPatternDemo { public static void main(String[] args) { Target target = new Adapter(); target.request(); } } ``` ##### 对象适配器模式 ```java // 目标接口 interface Target { void request(); } // 被适配的类 class Adaptee { public void specificRequest() { System.out.println("调用适配者中的方法"); } } // 对象适配器 class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { // 调用适配者中的方法 adaptee.specificRequest(); } } // 测试类 public class AdapterPatternDemo { public static void main(String[] args) { Adaptee adaptee = new Adaptee(); Target target = new Adapter(adaptee); target.request(); } } ``` ### 适配器模式的实际应用 1. **日志框架适配**:不同的日志框架提供了不同的接口,通过适配器模式可以将应用程序中的日志接口适配到具体的日志框架,实现日志记录功能。 2. **数据库连接适配**:不同的数据库连接方式和协议可以通过适配器模式进行统一,使得应用程序可以方便地切换数据库。 适配器模式在软件开发中有着广泛的应用,通过适配器可以实现不同系统、模块之间的无缝对接,提高系统的灵活性和可扩展性。发布于 2024-08-07 09:34 •IP属地 河北举报评论收藏
公众号进入网站体验更佳

