一.class adapter mode
// class Adaptee
class Adaptee // cumputer's power
{
public:
void SpecialRequest() {cout<<"adpatee's specialRequest"<<endl;}
} ;
// class Target
class Target // normal power
{
public:
virtual void Request() = 0 ;
} ;
// class Adapter
class Adapter : public Target, private Adaptee // an adapter which makes normal power is suitble for cumpter's power
{
public:
virtual void Request() { SpecialRequest() ; }
} ;
}
int main()
{
using namespace DesignPattern_Adapter ;
Target *p = new Adapter() ;
p->Request() ; //Actually the Adaptee::SpecialRequest() method is called
delete p;
system("pause");
return 0;
}
二.object adapter mode 1 object comprise
namespace DesignPattern_Adapter
{
// class Adaptee
class Adaptee
{
public:
void SpecialRequest() {cout<<"adpatee's specialRequest"<<endl;}
} ;
// class Target
class Target
{
public:
virtual void Request() = 0 ;
} ;
// class Adapter
class Adapter : public Target
{
public:
virtual void Request() { _adaptee.SpecialRequest() ; }
private:
Adaptee _adaptee ;
};
}
int main()
{
using namespace DesignPattern_Adapter ;
Target *p = new Adapter() ;
p->Request() ; //Actually the Adaptee::SpecialRequest() method is called
delete p;
system("pause");
return 0;
}
object adapter mode 2 object extensive
class target
{
public:
virtual void request(){cout<<"normal power"<<endl;}
};
class adaptee: public target
{
public:
void specialRequest(){cout<<"computer power"<<endl; }
};
class Adapter: public target
{
public:
Adapter(adaptee *_p){p = _p;}
void request()
{
p->specialRequest();
}
private:
adaptee *p;
};
int main() //client
{
adaptee *pAdaptee = new adaptee();
Adapter *p = new Adapter(pAdaptee);
p->request();
delete pAdaptee;
delete p;
system("PAUSE");
return 0;
}