[设计模式学习--C++实现]--Adapter模式
Adapter模式分为两种:类模式和对象模式。
类模式代码实现:
1 //Adapter.h 2 class Adapter:public Target ,private Adaptee 3 { 4 public: 5 Adapter(); 6 ~Adapter(); 7 void Request(); 8 protected: 9 private: 10 }; 11 #endif //~_ADAPTER_H_ 12 13 //Adapter.cpp 14 Adapter::Adapter() 15 { 16 } 17 Adapter::~Adapter() 18 { 19 } 20 void Adapter::Request() 21 { 22 this->SpecificRequest(); 23 }
对象模式实现代码:
1 //Adapter.h 2 class Adapter:public Target 3 { 4 public: 5 Adapter(Adaptee* ad e); 6 ~Adapter(); 7 void Request(); 8 protected: 9 private: 10 Adaptee* _ade ; 11 }; 12 #endif //~_ADAPTER_H_ 13 14 //Adapter.cpp 15 Adapter::Adapter(Adaptee* ade) 16 { 17 this->_ade = ad e; 18 } 19 Adapter::~Adapter() 20 { 21 } 22 void Adapter::Request() 23 { 24 _ade->SpecificRe quest(); 25 }
在类模式中,Adapter通过public继承实现了接口继承和实现继承,既可以对外提供父类中的接口,也可以实现父类中的代码。而private继承Adaptee属于实现继承,因为private是的父类中的所有函数变为private的,所以只能实现继承。
main函数实现代码
1 //main.cpp 2 #include "Adapter .h" 3 #include <iostream> 4 using namespace std; 5 6 int main( i nt ar gc,char* argv[] ) 7 { 8 Adaptee* ad e = new Adaptee; 9 10 Ta rget * adt = n ew Adapter(ade) ; 11 12 adt->Request (); 13 14 return 0; 15 }
代码图片来自《GOF23中设计模式详解》一书。