适配器模式

来源:互联网 发布:兄弟连java培训多少钱 编辑:程序博客网 时间:2024/05/20 15:36

主要是通过适配器来适配第三方接口。

图中右边两个关系分别代表以下两种实现。

//继承实现,也称类模式class Target{public:Target(){}virtual ~Target(){}virtual void Request(){cout<<"Target::request"<<endl;}};class Adaptee{public:Adaptee(){}virtual ~Adaptee(){}virtual void SpeicalRequest(){cout<<"Adaptee::specialrequest"<<endl;}};class Adapter : public Target,private Adaptee{public:Adapter(){}~Adapter(){}void Request(){this->SpeicalRequest();}};int _tmain(int argc, _TCHAR* argv[]){Target* ad = new Adapter;ad->Request();system("pause");return 0;}//组合实现,对象模式class Target{public:Target(){}virtual ~Target(){}virtual void Request(){cout<<"Target::request"<<endl;}};class Adaptee{public:Adaptee(){}virtual ~Adaptee(){}virtual void SpeicalRequest(){cout<<"Adaptee::specialrequest"<<endl;}};class Adapter : public Target{public:Adapter(Adaptee* _ade){m_adaptee = _ade;}~Adapter(){}void Request(){m_adaptee->SpeicalRequest();}private:Adaptee* m_adaptee;};int _tmain(int argc, _TCHAR* argv[]){Adaptee* ade = new Adaptee;Target* ad = new Adapter(ade);ad->Request();system("pause");return 0;}



这里说一下接口继承和实现继承。

接口继承也就是子类获得父类的接口,父类没有实现部分,而实现继承则是继承父类的实现。Public继承既是接口实现又是继承实现,而private继承则是实现继承。

纯虚函数:要求继承类必须含有某个接口,并对接口函数实现(C++可以提供纯虚函数的默认实现,所以不是正宗的接口继承)。

虚函数:继承类必须含有某个接口,可以自己实现,也可以不实现,而采用基类定义的缺省实现。

非虚函数:继承类必须含有某个接口,必须使用基类的实现。