C++【适配器模式】

文章详细介绍了适配器模式,如何通过创建适配器解决不同接口之间的兼容问题,如将JSON库转换为接受XML数据。UML图展示了客户端、接口和适配器的角色。适配器模式适用于代码与遗留系统间的转换,强调了其在已有代码中的灵活性和单一职责原则的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍

适配器模式是一种结构型设计模式 | 它能使接口不兼容的对象能够相互合作。(是适配各种不同接口的一个中间件)

基础理解

举个例子:当你引用了一个第三方数据分析库,但这个库的接口只能兼容JSON 格式的数据。但你需要它能接收核心类处理后产生的 XML 文件。
而且因为这个库不是你写的,所以你不能对其源码进行修改成接收XML格式的文件。

你无法 “直接” 使用分析函数库, 因为它所需的输入数据格式与你的程序不兼容。

解决:这时候你就可以创建一个适配器。能够在转换对象的接口,将XML 格式转换为JSON 格式。你甚至可以创建一个双向适配器来实现双向转换调用来实现不通过接口对象之间的合作。

适配器不仅可以转换不同格式的数据, 其还有助于采用不同接口的对象之间的合作。

在这里插入图片描述

UML图

  1. 客户端 (Client) 是包含当前程序业务逻辑的类。

  2. 客户端接口 (Client Interface) 描述了其他类与客户端代码合作时必须遵循的协议。

  3. 服务 (Service) 中有一些功能类 (通常来自第三方或遗留系统)。 客户端与其接口不兼容, 因此无法直接调用其功能。

  4. 适配器 (Adapter) 是一个可以同时与客户端和服务交互的类: 它在实现客户端接口的同时封装了服务对象。
    在这里插入图片描述

客户端代码只需通过接口与适配器交互即可, 无需与具体的适配器类耦合。

类适配器:适配器同时继承两个对象的接口(仅能在支持多重继承的编程语言中实现 c++)

类适配器只是继承了客户端接口和服务 的行为。将适配功能用重写的方式完成

实现方式

确保至少有两个类的接口不兼容:

  1. 一个无法修改 (通常是第三方、 遗留系统或者存在众多已有依赖的类) 的功能性服务类。
  2. 一个或多个将受益于使用服务类的客户端类。
#include <iostream>
#include <stdlib.h>

// 双端队列(已有实现的类和接口,第三方类等等)
class Deque
{
   
   
public:
    void push_back(int x) {
   
    std::cout << "Deque push_back" << std::endl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值