C++设计模式之Adapter模式详解

需积分: 9 2 下载量 68 浏览量 更新于2024-07-26 收藏 156KB DOC 举报
C++设计模式精简版 C++设计模式是软件开发中的一种重要概念,它提供了一种灵活的方式来解决软件设计中的问题。 Adapter模式是C++设计模式中的一种重要模式,它使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 一、Adapter模式的功能 Adapter模式的主要功能是将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。这个模式使得原本由于接口不兼配而不能一起工作的那些类可以一起工作。 二、Adapter模式的结构图 Adapter模式的结构图可以分为两种:Class Adapter和Object Adapter。 (1)Class Adapter: Class Adapter是通过继承Adaptee类和实现Target接口来实现Adapter的。这种方式可以将Adaptee类的接口转换成Target接口,从而使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (2)Object Adapter: Object Adapter是通过组合Adaptee对象和实现Target接口来实现Adapter的。这种方式可以将Adaptee对象的接口转换成Target接口,从而使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 三、Adapter模式的实现 学习设计模式的重点是学习每种模式的思想,而不应拘泥于它的某种具体结构图和实现。因为模式是灵活的,其实现可以是千变万化的,只是所谓万变不离其宗。在STL中大量运用了Adapter模式,象function adapter、iterator adapter,它们与这里说的Adapter结构并不一样,但思想是一样的。 四、Adapter模式的示例代码 (1)Class Adapter: namespace DesignPattern_Adapter { class Adaptee { public: void SpecialRequest() {} }; class Target { public: virtual void Request() = 0; }; class Adapter : public Target, private Adaptee { public: virtual void Request() { SpecialRequest(); } }; } 客户端代码: { using namespace DesignPattern_Adapter; Target* p = new Adapter(); p->Request(); // 实际上调用的是Adaptee::SpecialRequest() } (2)Object Adapter: namespace DesignPattern_Adapter { class Adaptee { public: void SpecialRequest() {} }; class Target { public: virtual void Request() = 0; }; class Adapter : public Target { private: Adaptee* adaptee; public: Adapter(Adaptee* a) : adaptee(a) {} virtual void Request() { adaptee->SpecialRequest(); } }; } 客户端代码: { using namespace DesignPattern_Adapter; Adaptee* a = new Adaptee(); Target* p = new Adapter(a); p->Request(); // 实际上调用的是Adaptee::SpecialRequest() } Adapter模式是一种重要的设计模式,它使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它的实现可以是千变万化的,但思想是一样的。