适配器模式及C++实现

适配器模式

适配器模式是很好理解的模式了,生活中也非常常见,什么插头2口转3口,什么USB转PS2,这都算是适配器模式。说白了,就是如果有一些东西提供的接口你很像用,但是你手头没有好的接口使用它,这个就需要一个适配器,将你需要的接口转换成你所拥有的接口。这样的好处也是显而易见,就是你不用改变你现在所拥有的接口,保证你在任何地方的用法都不需要修改,然后底层的实现由适配器调用需要的接口来具体实现。

image

常见的场景

使用第三方库的时候,第三方的库肯定不能适用所有的系统,所以需要一个适配器来转换。

优点

1.屏蔽了具体的实现方式,实现了依赖倒转。

2.可以把不统一的接口封装起来,使之成为统一的接口。

3.把本来不方便适用的接口转换成统一的接口。

缺点

C++实现

1 #ifndef _ADAPTER_H_
 2 #define _ADAPTER_H_
 3 
 4 #include "Adaptee.h"
 5 
 6 
 7 class Target
 8 {
 9 public:
10     Target();
11     virtual ~Target();
12 
13     virtual void request() = 0;
14 };
15 
16 
17 class Adapter: public Target
18 {
19 public:
20     Adapter();
21     ~Adapter();
22 
23     void request();
24 
25 
26 private:
27     Adaptee* adaptee;
28 };
29 
30 
31 #endif
1 #include "Adapter.h"
 2 
 3 
 4 Target::Target()
 5 {
 6 
 7 }
 8 
 9 
10 Target::~Target()
11 {
12 
13 }
14 
15 
16 Adapter::Adapter():
17     adaptee(new Adaptee())
18 {
19 
20 }
21 
22 
23 Adapter::~Adapter()
24 {
25 
26 }
27 
28 
29 void Adapter::request()
30 {
31     adaptee->specificRequest();
32 }
1 #ifndef _ADAPTEE_H_
 2 #define _ADAPTEE_H_
 3 
 4 class Adaptee
 5 {
 6 public:
 7     Adaptee();
 8     ~Adaptee();
 9 
10     void specificRequest();
11 
12 };
13 
14 
15 #endif
1 #include "Adaptee.h"
 2 #include <stdio.h>
 3 
 4 
 5 Adaptee::Adaptee()
 6 {
 7 
 8 }
 9 
10 
11 Adaptee::~Adaptee()
12 {
13 
14 }
15 
16 
17 void Adaptee::specificRequest()
18 {
19     fprintf(stderr, "this is specificRequestn");
20 }
1 #include "Adapter.h"
2 
3 
4 int main()
5 {
6     Target* tar = new Adapter();
7     tar->request();
8     return 0;
9 }
1 g++ -o client client.cpp Adapter.cpp Adaptee.cpp

运行结果

image
原文链接: https://www.cnblogs.com/cxjchen/p/3159757.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/93648

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午2:15
下一篇 2023年2月10日 上午2:16

相关推荐