1. 程式人生 > >Design Patterns 6: Adapter

Design Patterns 6: Adapter

提供一個介面(Adapter)將已有的類(Adaptee)的介面轉換為使用者期待的類(Target)的介面

struct Adaptee
{
	void SpecificRequest() {}
};

struct Target
{
	virtual void Request() = 0;
};

struct Adapter : Target
{
	void Request() override { _adaptee->SpecificRequest(); }
	Adapter(Adaptee* adaptee) : _adaptee(adaptee) {}
private:
	Adaptee* _adaptee;
};

int main()
{
	Target* p = new Adapter(new Adaptee);
	p->Request();//Adaptee::SpecificRequest() get called
}
struct Target
{
	virtual void Request() = 0;
};

struct Adaptee
{
	void SpecificRequest() {}
};

struct Adapter : Target, Adaptee
{
	void Request() override { SpecificRequest(); }
};

int main()
{
	Target* p = new Adapter;
	p->Request();//Adaptee::SpecificRequest() get called
}