👈️上一篇:装饰器模式 | 下一篇:组合模式👉️
设计模式深度剖析-专栏👈️
目录 适配器模式定义英文原话直译如何理解呢?字面理解案例分析1. TypeCInterface to TypeAInterface2. 电源适配器3. HDMI to VGA4. Type-C拓展坞 三个角色UML类图代码示例 适配器模式分类类适配器模式代码示例:对象适配器代码示例: 示例解析:以电源适配器为例方便理解示例2:DP转HDMI适配器领域驱动设计中的防腐层Ja io类库示例:适配器VS装饰器模式适配器模式的优点适配器模式的应用场景拓展阅读1. 目前主流接口类型2. 词语解释3. 电源适配器 适配器模式适配器模式(Adapter(参考:词语解释) Pattern)在计算机编程中,将一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
作用:适配器模式的主要作用是解决接口不兼容的问题,使得原本不能协同工作的类能够一起工作。它通过对现有类的适配,生成新的类来满足客户端的需求。
==> 本文示例源码,点击查看 public void specificRequest() { System.out.println("Called specificRequest()"); } } // 适配器(Adapter) public class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } // 实现目标接口的方法,通过调用适配者的方法实现 @Override public void request() { adaptee.specificRequest(); } } // 客户端(Client) public class Client { public static void main(String[] args) { // 创建适配者对象 Adaptee adaptee = new Adaptee(); // 创建适配器对象,并传入适配者对象 Target target = new Adapter(adaptee); // 客户端调用目标接口的方法 target.request(); } } /* Output: Called specificRequest() *///~
在这个例子中,Target 是客户端所期望的接口,Adaptee 是需要被适配的类,它的接口是 specificRequest()。Adapter 类实现了 Target 接口,并持有 Adaptee 的引用。在 Adapter 的 request() 方法中,调用了 Adaptee 的 specificRequest() 方法。在 Client 中,我们创建了 Adaptee 和 Adapter 的实例,并通过 Adapter 来调用 Adaptee 的方法,实现了接口之间的适配。
适配器模式分类 类适配器:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类而实现适配。对象适配器:把“被适配者”作为一个对象组合到适配器类中,以修改目标接口包装被支配者。由于Ja语言单继承,不支持多继承,因此可以将对象适配器模式看作是通过组合的方式替代类适配器模式多继承的问题。
类适配器模式代码示例: // 被适配者:老旧的类 public class LegacyClass { public void legacyMethod() { System.out.println("Called legacyMethod()"); } } // 目标接口:新系统期望的接口 public interface TargetInterface { void request(); } // 类适配器:通过多重继承实现接口匹配 public class ClassAdapter extends LegacyClass implements TargetInterface { @Override public void request() { // 调用被适配者的方法,并可能加入一些适配逻辑 legacyMethod(); // 其他适配逻辑... } } // 客户端代码 public class Client { public static void main(String[] args) { TargetInterface adapter = new ClassAdapter(); adapter.request(); } } /* Output: Called legacyMethod() *///~ 对象适配器代码示例:在对象适配器中,我们不会通过继承 LegacyClass 来实现 TargetInterface,而是将 LegacyClass 的一个实例作为适配器类的一个成员变量
// 被适配者:还是老旧的类 // (与类适配器中的被适配者相同) // 目标接口:与类适配器中的目标接口相同 // (与类适配器中的目标接口相同) // 对象适配器:持有被适配者的实例,并实现目标接口 public class ObjectAdapter implements TargetInterface { private LegacyClass legacy; public ObjectAdapter(LegacyClass legacy) { this.legacy = legacy; } @Override public void request() { // 调用被适配者的方法,并可能加入一些适配逻辑 legacy.legacyMethod(); // 其他适配逻辑... } } // 客户端代码 public class Client { public static void main(String[] args) { LegacyClass legacy = new LegacyClass(); TargetInterface adapter = new ObjectAdapter(legacy); adapter.request(); // 输出:Called legacyMethod() } } /* Output: Called legacyMethod() *///~下面我们介绍的主要是对象适配器模式。因为它解决了多继承的问题。
示例解析:以电源适配器为例方便理解==> 本文示例源码,点击查看 public int provideVoltage() { return 220; // 家庭电源提供220V电压 } } // 适配器(电源适配器) public class VoltageAdapter implements Voltage { private PowerSupply powerSupply; public VoltageAdapter(PowerSupply powerSupply) { this.powerSupply = powerSupply; } // 将家庭电源的电压适配到设备所需的电压 @Override public int getVoltage() { int rawVoltage = powerSupply.provideVoltage(); // 假设这里简单地通过除以2来模拟电压的适配(实际上会更复杂) int adaptedVoltage = rawVoltage / 2; System.out.println("适配后的电压:" + adaptedVoltage + "V"); return adaptedVoltage; } } // 客户端(使用电器设备的用户) public class Client { public static void main(String[] args) { // 创建一个家庭电源对象 PowerSupply powerSupply = new PowerSupply(); // 创建一个电源适配器对象,并将家庭电源传入 VoltageAdapter voltageAdapter = new VoltageAdapter(powerSupply); // 客户端通过适配器获取适配后的电压 int voltage = voltageAdapter.getVoltage(); System.out.println("设备需要的电压:" + voltage + "V"); } } /* Output: 适配后的电压:110V 设备需要的电压:110V *///~
在这个例子中,Voltage 接口是目标接口,它代表了电器设备期望的电压接口。PowerSupply 类是适配者,它提供了家庭电源的电压(220V)。VoltageAdapter 类是适配器,它实现了 Voltage 接口,并将 PowerSupply 对象作为私有成员变量持有。在 VoltageAdapter 的 getVoltage() 方法中,它调用了 PowerSupply 的 provideVoltage() 方法获取原始电压,然后进行了适配(这里简单地通过除以2来模拟),最后返回适配后的电压。
在 Client 类中,我们创建了一个 PowerSupply 对象和一个 VoltageAdapter 对象,并将 PowerSupply 对象传入 VoltageAdapter 的构造函数中。然后,我们通过 VoltageAdapter 的 getVoltage() 方法获取适配后的电压,并打印出来。这样,客户端就可以通过适配器使用家庭电源来为电器设备提供所需的电压了。
示例2:DP转HDMI适配器假设我有一台显示器只有DP接口,而我有一台笔记本只有HDMI接口,我需要连接该显示器,但是我遇到了一个接口不适配的问题?导致无法直接连接工作。
于是我买一个DP转Hdmi的适配器,将显示屏的DP线转成HDMI线接到笔记本电脑,正常点亮显示器。
购买的DP转HDMI的转换器就是一个很好的适配器模式的实际应用例子。
在这个例子中:
目标接口(Target):是笔记本电脑的HDMI接口,它期望接收到HDMI信号来驱动显示器。适配者(Adaptee):是显示屏的DP线,它提供了DisplayPort(DP)信号,这是笔记本电脑HDMI接口不能直接识别的。适配器(Adapter):就是DP转HDMI的转换器,它将DisplayPort(DP)信号转换成HDMI信号,使得原本不能直接连接到笔记本电脑的显示屏DP线能够通过HDMI接口正常工作。当你将显示屏的DP线连接到DP转HDMI的转换器,然后再将转换器的HDMI端连接到笔记本电脑的HDMI接口时,适配器就起到了将适配者(DisplayPort信号)转换成目标接口(HDMI信号)所需格式的作用,从而实现了显示屏与笔记本电脑的连接和正常显示。这就是适配器模式在日常生活中的一个典型应用。
为了更贴近DP转HDMI转换器的适配器模式示例,我们可以创建一个简化的代码模型。在这个模型中,我们将模拟DisplayPort接口、HDMI接口、DisplayPortDevice(适配者)和DisplayPortToHDMIAdapter(适配器)。
// 目标接口(HDMI接口) public interface HDMI { void connectHDMI(); } // 适配者(DisplayPort设备) public class DisplayPortDevice { public void connectDisplayPort() { System.out.println("DisplayPort 设备已连接"); } } // 适配器(DP转HDMI适配器) public class DisplayPortToHDMIAdapter implements HDMI { private DisplayPortDevice displayPortDevice; public DisplayPortToHDMIAdapter(DisplayPortDevice displayPortDevice) { this.displayPortDevice = displayPortDevice; } @Override public void connectHDMI() { // 适配过程:调用适配者的connectDisplayPort方法 // 在这里只是模拟,实际上可能包含更复杂的信号转换逻辑 displayPortDevice.connectDisplayPort(); System.out.println("DisplayPort 信号已适配为 HDMI 信号"); } } // 客户端(使用适配器的代码) public class Client { public static void main(String[] args) { // 创建适配者(DisplayPort设备) DisplayPortDevice displayPortDevice = new DisplayPortDevice(); // 创建适配器(DP转HDMI适配器),并传入适配者 HDMI hdmiAdapter = new DisplayPortToHDMIAdapter(displayPortDevice); // 客户端使用目标接口(HDMI接口)的方法 hdmiAdapter.connectHDMI(); } } /* Output: DisplayPort 设备已连接 DisplayPort 信号已适配为 HDMI 信号 *///~在上面的代码中,HDMI接口代表笔记本电脑上的HDMI接口,它期望一个设备通过connectHDMI方法连接。DisplayPortDevice类代表显示屏的DisplayPort设备,它有一个connectDisplayPort方法来表示连接DisplayPort线。DisplayPortToHDMIAdapter类实现了HDMI接口,并在内部持有一个DisplayPortDevice对象。当客户端调用hdmiAdapter.connectHDMI()时,适配器内部会调用适配者的connectDisplayPort方法,并模拟信号转换的过程。最终,在控制台上会打印出连接和适配成功的消息。
领域驱动设计中的防腐层当采用领域驱动设计(DDD, Domain-Driven Design)时,防腐层(Anticorruption Layer)是一个关键的概念,用于隔离领域模型与外部系统之间的交互,从而保护领域模型的纯洁性。
防腐层的主要目的是确保领域模型不会受到外部系统(如遗留系统、外部API等)的影响,这些外部系统可能具有与领域模型不兼容的接口、数据模型或行为。防腐层充当一个中间层,它负责将外部系统的数据转换为领域模型可以理解的格式,并可能隐藏外部系统的复杂性。
这里的防腐层将外部系统的数据转换成领域模型的过程可以看作是适配器模式的适配过程。
Ja io类库示例:适配器VS装饰器模式适配器的作用就是将一个接口适配到另一个接口,在Ja的I/O类库有很多这样的需求。
InputStreamReader和OutputStreamWriter类分别继承了Reader和Writer接口, 但是要创建它们的对象必须在构造函数中传入一个InputStream和OutputStream的实例。 InputStreamReader和OutputStreamWriter的作用也就是将InputStream和OutputStream适配到Reader和Writer。
StringReader将一个String类适配到Reader接口,ByteArrayInputStream适配器将byte数组适配到InputStream流处理接口。
回顾下上一篇装饰器模式的示例2类图

之前提到,Ja io类库借鉴了装饰器模式,而不等同于装饰器模式,因为类型发生了变化,没有递归的组合装饰器,不是严格的经典的装饰器模式。装饰器模式注重的是类型不变!
// 创建一个 FileInputStream 对象,用于从文件中读取数据 FileInputStream fis = new FileInputStream(exampleFile); // 使用 InputStreamReader 读取字符,并指定编码为 UTF-8 Reader isr = new InputStreamReader(fis, StandardCharsets.UTF_8); // 使用 BufferedReader 包装 InputStreamReader,添加缓冲功能 BufferedReader br = new BufferedReader(isr);现在我们进一步分析下这个过程:
String =1=> InputStream(FileInputStream) =2=> Reader(InputStreamReader) =3=> Reader(BufferedReader)
这个过程中步骤2是适配器适配过程,步骤3可以看作是装饰器装饰过程。
1 是从文件到字节流的直接映射,不涉及适配器或装饰器。步骤2:FileInputStream 到 InputStreamReader:这是一个适配器(Adapter)过程。InputStreamReader 是一个适配器类,它将字节流(InputStream,这里是 FileInputStream)适配为字符流(Reader)。这是因为在 Ja I/O 体系中,字节流和字符流是两个独立的体系,而 InputStreamReader 正是连接这两个体系的桥梁。步骤3:InputStreamReader 到 BufferedReader:这通常被看作是一个装饰器(Decorator)过程。BufferedReader 是一个装饰器类,它实现了 Reader 接口,并包装了另一个 Reader 对象(这里是 InputStreamReader)。BufferedReader 为 Reader 添加了缓冲功能,使得读取操作更加高效,并且提供了 readLine() 等方便的方法。关键点在于2步骤后类型发生了变化,3步骤类型不变。
现在我们就可以对上一篇装饰器模式中提到的
适配器模式与装饰器模式的区别:
装饰器与适配器模式都有一个别名就是包装模式(Wrapper),它们的作用看似都是起到包装一个类或对象的作用,但是使用它们的目的是很不一样的。
适配器模式的意义是要将一个接口转变成另外一个接口,它的目的是通过改变接口来达到重复使用的目的;而装饰器模式不是要改变被装饰对象的接口,而恰恰要保持原有的接口,但是增强原有对象的功能,或者改变原有对象的处理方法而提升性能。所以这两个模式设计的目的是不同的。有了更深的认识
适配器模式的优点 接口转换:适配器模式可以将不兼容的接口转换成客户端所期望的接口,从而使得客户端可以正常使用这些类。代码复用:适配器模式可以在不修改原有代码的基础上,将一个类的接口转换成客户端所期望的接口,从而使得原有的代码可以被复用。解耦:适配器模式将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无需修改原有代码。 适配器模式的应用场景系统扩展:当系统需要扩展时,可能会引入新的类和接口,而原有的客户端可能无法直接使用这些新的类和接口。通过适配器模式,可以将新的接口转换成客户端所期望的接口,使得客户端可以正常使用这些扩展的功能。
修改一个已经投产中的系统时,需要对系统进行扩展,此时使用一个已有的类,但这个类不符合系统中的接口,这时使用适配器模式是最合适的,它可以将不符合系统接口的类进行转换,转换成符合系统接口的、可以使用的类。
接口转换:在不同的组件或系统之间,可能存在不兼容的接口定义。通过适配器模式,可以将一个组件或系统的接口转换成另一个组件或系统所期望的接口,从而使得它们可以相互协作。
兼容老版本:当系统中存在一些老版本的组件或系统时,可能需要将这些已存在的老版本的接口转换成新的接口。通过适配器模式,可以实现这种转换,使得新老版本的组件或系统可以相互协作。
这种设计模式在解决接口不兼容问题、系统扩展、接口转换和兼容老版本等方面具有广泛的应用。
拓展阅读 1. 目前主流接口类型目前USB Type-C(USB-C)因其便利性、高速传输和充电功能而逐渐成为主流。
HDMI和DisplayPort仍然是视频传输的主流接口。
RJ45(以太网接口)和3.5mm耳机孔在特定设备和应用中仍然重要。
而SD卡槽和Thunderbolt接口则针对特定用户群体和高端设备。
Thunderbolt主要是一种协议,而不是具体的物理接口实现。早期的Thunderbolt接口物理外观和Mini DisplayPort接口相同,但在Thunderbolt 3及之后,其物理接口改为了USB Type-C。这种改变使得Thunderbolt接口在物理形态上更加统一和通用。
现在主流的笔记本接口类型多以USB Type-C为主,Type-C接口不仅支持传统的充电和数据传输功能,还支持反向供电。如连接到支持反向供电的显示器时,笔记本电脑可以通过Type-C接口从显示器获取电力,从而无需外接电源适配器即可工作。这种功能对于需要长时间移动办公或旅行的用户来说尤为方便。
现在主流的接口类型主要可以分为以下几类
USB接口
USB Type-A:这是传统的USB接口,虽然在新型设备上逐渐减少,但在许多老设备、外部设备和一些配件上仍然常见。USB Type-C(USB-C): 物理外形小巧,正反插皆可,方便用户使用。USB 2.0和USB 3.x:支持USB支持USB 2.0和USB 3.x协议,数据传输速度高达10Gbps(USB 3.2 Gen 2x2)。Power Delivery(PD):Type-C接口支持PD协议,这允许设备通过USB接口进行快速充电。通过PD协议,Type-C接口可以支持高达100W的充电功率。DisplayPort和HDMI:虽然这些主要是视频传输协议,但Type-C接口通过适配器或集成技术,可以支持DisplayPort和HDMI信号的传输。雷电(Thunderbolt):在某些高端设备上,Type-C接口可能支持雷电协议,从而提供更高的数据传输速度和更多的功能。其他协议:Type-C接口还可能支持其他协议,如MHL、USB4等,具体取决于设备和制造商的实现。USB Type-C广泛应用于智能手机、平板电脑、笔记本电脑等。USB Type-A和USB Type-C物理外观不同,但在支持的协议方面,它们可能相同或有所重叠。USB2.0, USB3.0说的是USB的协议类型,它可以有不同的物理实现无论是Type-A还是Type-C,它们都可以支持USB 2.0和USB 3.x协议。USB 2.0提供基本的数据传输速度,而USB 3.x(包括3.0、3.1和3.2)则提供更高的数据传输速度和效率。
视频输出接口
HDMI: 支持高清视频和音频传输,常见版本有HDMI 1.4、HDMI 2.0和HDMI 2.1。广泛应用于电视、显示器、投影仪等设备。 DisplayPort(DP): 另一种高清视频传输接口,支持更高的分辨率和刷新率。在高端显示器和游戏本中较为常见。网络接口
RJ45(以太网接口): 用于连接有线网络,提供稳定、高速的网络连接。在一些专业设备、游戏本和台式机上仍然常见。音频接口
3.5mm耳机孔: 支持音频输出和输入,常用于连接耳机、麦克风等音频设备。在许多笔记本电脑和移动设备上仍然可见。其他接口
SD卡槽: 用于读取SD卡和Micro SD卡等存储设备,常见于数码相机和一些便携式设备。 Thunderbolt接口: 由Intel和Apple共同开发,提供高速数据传输和视频传输功能,同时支持充电。主要在高端笔记本和专业设备上出现,如Apple的MacBook Pro和一些高性能工作站。Type-C接口是USB接口的一种类型,除了具有基本的充电和数据传输功能,还支持显示输出、音频传输等多种功能。
根据USB Type-C Alternate Mode技术规范,Type-C接口能够支持视频信号传输。通过支持DisplayPort、HDMI、VGA等各种视频输出协议的适配器或线缆,用户可以将设备连接到外部显示器或电视等设备上,实现大屏幕显示,观看高清视频等。同时也支持供电,现在市面上的一些带反向供电的显示器就是通过USB Type-C接口实现一根线同时支持供电以及视频传输。
Type-C接口凭借其高通用性、多功能性和便捷性,在现代电子设备中得到了广泛的应用。
注意:
Type-C接口虽然具有统一的物理外形,但在具体实现上可能存在差异。以下是关于Type-C接口的具体实现差异和相关信息的详细解释:
物理外形
Type-C接口的物理外形为椭圆形孔洞,尺寸大约为8.3mm x 2.5mm,这使得它相较于传统的USB接口更加小巧,适用于便携式设备。
功能差异
虽然Type-C接口在物理外形上统一,但其具体功能实现可能因设备而异。例如,某些Type-C接口可能仅支持数据传输,而另一些则可能同时支持数据传输和充电功能。Type-C接口还支持多种USB标准,包括USB 2.0、USB 3.0、USB 3.1等,不同的USB标准将影响数据传输速度和充电功率。数据传输速度
Type-C接口支持高达10Gbps的数据传输速度(根据USB 3.1规范),但具体实现取决于设备和线缆的支持情况。如果设备或线缆仅支持USB 2.0标准,则数据传输速度将大大降低。
充电功率
Type-C接口支持高达100W的功率传输(根据USB Power Delivery规范),但并非所有Type-C接口都支持如此高的充电功率。设备的充电功率取决于其内部电路设计和所使用的充电协议。
其他功能
除了数据传输和充电功能外,Type-C接口还支持视频输出、音频传输等其他功能。这些功能的实现同样取决于设备和线缆的支持情况。
兼容性和标准
虽然Type-C接口具有统一的物理外形和连接标准,但不同品牌和制造商的设备可能存在兼容性问题。因此,在购买转接器、线缆或其他配件时,需要确认其是否与自己的设备兼容。
智能化特性
一些高端的Type-C接口内置了智能芯片,能够自动识别连接设备的类型,并根据需要调整功率传输和数据传输速率。这种智能化特性提高了设备的兼容性和使用便利性。
总结来说,Type-C接口虽然具有统一的物理外形和连接标准,但在具体实现上可能存在差异。这些差异包括功能差异、数据传输速度、充电功率、其他功能支持以及兼容性和标准等方面。因此,在使用Type-C接口时,需要了解设备和线缆的具体规格和支持情况,以确保其能够正常工作并发挥最佳性能。
现在的笔记本电脑主流接口是Type-C,用户常通过连接一个拓展坞(也称为扩展坞或接口转换器)来扩展其功能。这个拓展坞是一个适配器,它能够将单一的Type-C接口转换为多个其他类型的接口,如HDMI接口和USB Type-A接口,从而为用户提供了更多的连接选项和便利。
Type-C接口不仅支持传统的充电和数据传输功能,还支持反向供电。如连接到支持反向供电的显示器时,笔记本电脑可以通过Type-C接口从显示器获取电力,从而无需外接电源适配器即可工作。这种功能对于需要长时间移动办公或旅行的用户来说尤为方便。
返回
2. 词语解释题外话:最开始接触适配器模式时,对适配一词不太理解,慢慢的才对这个词有了认识。
想起以前读书时候专业课的学习,期末考试时候,专业课考卷上来就是词语解读。
这里我们也对"adapt", “adapter”,"适配"三个词进行解读下,以便我们更好的理解适配器模式。
Adapt(适应):这个词指的是使某物适应新的环境、条件或需求。在编程中,这通常意味着使一个组件或类能够与其他不兼容的组件或类一起工作。
“adapt”是一个英语单词,主要用作及物动词和不及物动词。
作为及物动词时,它的意思是“使适应;改编”。例如,“adapt oneself”表示“使自己适应…”,而“adapt something for”或“adapt something from”则表示“改编或改写某物以适应或来自…”。
作为不及物动词时,它的意思是“适应”。这通常指人或物在原有情况下作出某些改变,以适应新的环境或不同的条件。例如,“You he to adapt to the new job.”(你必须适应新工作。)
此外,“adapt”也可以用于描述生物体为适应环境变化而作出的改变,或者帮助生物体适应这些变化。
这里我们主要是认识到adapt有适应的意思。
何谓之适应?一定是环境与自己的预期不一致,因此才会有适应的概念。 正如同适配器模式的概念所述: Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces. 将一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 正因为提供的接口与我们期望(expect)的接口不一致,无法正常工作,于是通过适配器,进行适配,以适应这种不一致。
Adapter(适配器):这个词来源于“adapt”,指的是一个使不同设备或系统能够互相连接的装置或设备。在编程中,适配器是一个中间层或组件,它允许两个具有不兼容接口的类或组件协同工作。
适配(适配过程):这是一个过程,即将一个事物或系统调整或转换以适应另一个事物或系统的需求。在编程中,适配过程通常涉及将一个类的接口转换成另一个类所期望的接口。
返回
3. 电源适配器电脑等电子产品需要供电才能正常工作,而这些电子产品内部使用的电源通常是直流电(DC,Direct Current),这是因为电脑和其他电子设备的内部电路、电子元件和集成电路模块都是根据直流电的工作特性来设计和制造的。
然而,公共电网提供的交流电(AC,Alternating Current**)**,比如家庭用电通常是220V的交流电。
这种交流电通过电力设施进行传输和分配,最终供给我们日常使用的各种电器设备。
但是,这时就存在一个问题:如何将公共电网提供的交流电(AC)转换为电脑等电子产品所需的直流电(DC)呢?
直流电(DC)和交流电(AC)是电力系统中两种截然不同的电流格式。它们的主要区别体现在电流的方向和变化特性上。直流电的方向始终保持一致,不随时间变化,而交流电的方向则会随时间周期性改变。这两种电流格式在电力系统中各有其应用,根据具体需求和场景选择合适的电流格式是电力系统设计和运行的关键之一。
为了解决这个问题,人们发明了电源适配器(Power Adapter,也称为充电器Charger,还被称为外置电源)。电源适配器(Power Adapter)是一种电力转换设备,它能够将输入的交流电(AC)转换为所需的直流电(DC)。
这个转换过程通常包括以下几个步骤:
整流:电源适配器中的整流器将输入的交流电转换为脉动直流电。整流器通常使用二极管或晶体管等半导体器件来实现。滤波:经过整流后的脉动直流电还含有一定的交流成分,需要通过滤波器进行平滑处理,以得到较为稳定的直流电。滤波器通常由电容器和电感器等元件组成。稳压:为了确保输出的直流电具有稳定的电压值,电源适配器中还会包含稳压电路。稳压电路可以根据负载的变化,自动调整输出电压,以保持稳定。经过以上步骤的转换后,公共电网提供的交流电就被成功地转换为了电脑等电子产品所需的直流电。
这样,我们就可以将电源适配器连接到电源插座上,为电脑等电子产品提供稳定的电力供应了。
返回
👈️上一篇:装饰器模式 | 下一篇:组合模式👉️
设计模式深度剖析-专栏👈️