一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

设计模式之适配器模式

  适配器模式,将一个类的借口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式主要解决的是数据和行为都正确,但接口不符合的情况。该模式很好理解,其UML图如下:

 示例代码如下:

复制代码
 1 // AdapterModel.h文件
 2 #pragma once
 3 #include <iostream>
 4 class Target
 5 {
 6 public:
 7     virtual void request()
 8     {
 9         std::cout << "普通的请求" << std::endl;
10     }
11 };
12 
13 class Adatee
14 {
15 public:
16     void specificalRequest()
17     {
18         std::cout << "特殊请求" << std::endl;
19     }
20 };
21 
22 class Adapter : public Target
23 {
24 private:
25     Adatee * m_p;
26 public:
27     Adapter() : m_p(nullptr)
28     {
29         m_p = new Adatee;
30     }
31     ~Adapter()
32     {
33         if (nullptr != m_p)
34             delete m_p;
35     }
36     virtual void request()
37     {
38         Target::request();
39         m_p->specificalRequest();
40     }
41 };
复制代码

其测试代码如下:

复制代码
 1 #include <iostream>
 2 #include "AdapterModel.h"
 3 
 4 int main()
 5 {
 6     using namespace std;
 7     // 适配器模式
 8     Target * p = new Adapter();
 9     p->request();
10     
11     getchar();
12     return 0;
13 }
复制代码

测试结果如下图:

 

posted on   一杯清酒邀明月  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-07-07 Qt 编译时报错“退出,退出代码2”的原因
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示