设计模式_适配器

来源:互联网 发布:在线影视源码 编辑:程序博客网 时间:2024/06/05 08:22
//类适配器#include<memory>#include<iostream>using namespace std;class Target {  public:    virtual void request(){        cout << "Target::Request"<<endl;    }};class Adaptee{public:   void SpecificRequest(){        cout << "adaptee::SpecificRequest()"<<endl;    }};class Adapter : public Target , Adaptee{public:    void request(){        Adaptee::SpecificRequest ();    }};int main(int argc, char *argv[]){    auto_ptr<Target> tarobj ( new Adapter() );//适配器就是引入中间类进行后台链接    //Target *tarobj = new Adapter();    tarobj->request ();    return 0;}
//对象适配器(比类适配器常用)#include<iostream>#include<memory>using namespace std;class Target{public:    Target() {}    virtual ~Target(){        cout <<"delete target"<<endl;    }    virtual void Request(){        cout << "Target request" << endl;    }};class Adaptee{public:    Adaptee() {}    void SpecialRequest(){        cout << "Adaptee::request" <<endl;    }};class Adapter : public Target{public:    Adapter()  : m_Adaptee(new Adaptee()){}    ~Adapter(){        if( m_Adaptee != NULL){            delete m_Adaptee;            cout << "delete Adaptee"<<endl;            m_Adaptee = NULL;        }    }    void Request (){        m_Adaptee->SpecialRequest ();    }private:    Adaptee *m_Adaptee;};int main(int argc, char *argv[]){    auto_ptr<Target> tarobj (new Adapter());    tarobj->Request ();    return 0;}


2 0