浅谈设计模式之五——Adapter模式

本文详细阐述了适配器模式的概念、原理,并通过代码示例展示了其实现过程。适配器模式作为结构型设计模式之一,主要用于解决不同接口之间的兼容性问题。文章首先介绍了适配器模式的分类,随后通过UML图解释了其核心思想,最后通过实例代码演示了如何使用对象适配器解决接口不匹配的问题。

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

这一节开始谈谈结构型模式。结构型模式包括:**适配器、桥接、组成、装饰、外观、享元、代理模式**7种设计模式。这一节说一下适配器模式,适配器模式可以分为类适配器和对象适配器,类适配器其实就是多继承,一般用对象适配器,因此这里只讲对象适配器。
先上uml:
这里写图片描述
这里先注明,uml懒得画,都是从网上截图的,但是所有代码都是自己写的。
uml解析:客户需要的是Target中的Request接口,但是现有的Adeptee的接口是SpecificRequest(),而Adapter正是做这个事,提供一个Request接口,通过对象组合,调用Adaptee->SpecificRequest()。举个比较容易理解的例子,新的鼠标是usb接口的,而电脑的鼠标口是比较久的那种针孔的,怎么办呢?这时候需要一个转换器,也就是“适配器”,usb转针孔。
下面给出可运行的示例代码:
Adapter.h

#pragma once
#include <iostream>
using namespace std;

class Adaptee;

class Target
{
public:
    virtual void Request()=0;
};

class Adapter:public Target
{
public:
    Adapter(Adaptee &adaptee);
    ~Adapter();

    void Request();
private:
    Adaptee & m_Adaptee;

};

class Adaptee
{
public:
    Adaptee(){}
    ~Adaptee(){}

    void SpecificRequest();

};

Adapter.cpp

#include "Adapter.h"

Adapter::Adapter(Adaptee &adaptee):m_Adaptee(adaptee)
{
}

Adapter::~Adapter()
{
}

void Adapter::Request()
{
    m_Adaptee.SpecificRequest();
}

void Adaptee::SpecificRequest()
{
    cout<<"SpecificRequest"<<endl;
}

main.cpp

#include "Adapter.h"

int main(int argc,char ** argv)
{
    Adaptee adaptee;
    Target *f = new Adapter(adaptee);
    f->Request();

    return 0;
}

执行结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值