adapter.cpp

来自「自己写的c++实现的headfirst中的设计模式」· C++ 代码 · 共 79 行

CPP
79
字号
/* 适配器
 */

#include <iostream>

using namespace std;

class Duck	//修饰目标必须virtual
{
public:
	virtual void say_hello()
	{
		cout << "Duck language: Gua Gua~"<<endl;
	}
	
	virtual void say_byebye()
	{
		cout << "Duck language: Gu Gu Ga~"<<endl;
	}
};

class Cow
{
public :
	void say_hello()
	{
		cout <<"Cow language: Mu~~~"<<endl;
	}
	
	void say_byebye()
	{
		cout <<"Cow language: En En ~"<<endl;
	}
};

void DuckHello(Duck& d)
{
	d.say_hello();
}

void DuckBye(Duck& d)
{
	d.say_byebye();
}

class Translator:public Duck	//adapter
{
private:
	Cow* c;
	Translator();
	
public:
	Translator(Cow& tmp):c(&tmp){}
	
	void say_hello()
	{
		c->say_hello();
	}
	
	void say_byebye()
	{
		c->say_byebye();
	}
};

void adapter_main()
{
	Duck d;
	Cow c;
	
	DuckHello(d);
	DuckBye(d);
	
	Translator dc(c);
	DuckHello(dc);
	DuckBye(dc);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?