Adapter模式主要意图是将类或接口转换成客户期望的接口,从而使得原本不兼容、无法在一起工作的接口可以在一起工作。该模式有两种形式的Adapter法,一是继承方式;二是对象关联依赖方式。

    继承方式Adapter法,相比之下,耦合性更强些,并且毕竟依赖于静态继承,如果被适配的对象有多个(派生)版本的话,则在运行时,将无法做到动态适配,因此,如果想要切换适配对象,就必需要重新编译链接。该方式的类关系参考如下:

【结构型】Adapter模式

    就Adapter的目的来说,Adapter对象在使用目的上与被适配的Adaptee对象本质上是没有什么关系的,因此可以说Adapter对象并不是一个Adaptee对象,Adapter对象仅仅只是需要Adaptee对象的相关功能而已(可以直观理解为:借个道,从你这路过而已)。继承方式的Adapter的编码结构参考如下:

 

 1 namespace adapter
 2 {
 3     class Target
 4     {
 5     public:
 6         virtual void doSomething() {};
 7         // some code here........(like virtual destructor etc.)
 8 
 9     };//class Target
10 
11     class Adaptee
12     {
13     public:
14         void doSpecifyWork() { /* some code here........ */ }
15 
16     };//class Adaptee
17 
18     class Adapter : public Target
19                   , private Adaptee
20     {
21     public:
22         virtual void doSomething() override { Adaptee::doSpecifyWork(); }
23 
24     }//class Adapter
25 
26 }//namespace adapter
类继承式的Adapter编码结构参考

相关文章:

  • 2021-04-18
  • 2021-10-30
  • 2022-01-03
  • 2021-11-19
  • 2021-09-26
  • 2021-11-15
  • 2021-06-17
  • 2022-12-23
猜你喜欢
  • 2021-08-06
  • 2021-05-21
  • 2021-10-13
  • 2021-11-11
  • 2021-09-21
  • 2021-07-28
  • 2022-02-13
相关资源
相似解决方案