//桥接模式,合成,聚合复用原则
#include<iostream>
using namespace std;
class Soft
{
public:
virtual void run() = 0;
};
class Notepad :public Soft
{
public:
void run()
{
cout << "运行Notepad++软件" << endl;
}
};
class QtCreator :public Soft
{
public:
void run()
{
cout << "运行QtCreator软件" << endl;
}
};
class Computer
{
protected:
Soft* m_soft;
public:
void setsoft(Soft* soft)
{
m_soft = soft;
}
virtual void Run() = 0;
};
class Lenovo :public Computer
{
public:
Lenovo()
{
cout << "联想电脑正在开机..." << endl;
}
void Run()
{
this->m_soft->run();
}
};
class Dale :public Computer
{
public:
Dale()
{
cout << "戴尔电脑正在开机..." << endl;
}
void Run()
{
this->m_soft->run();
}
};
int main()
{
Computer* lenovo = new Lenovo();
lenovo->setsoft(new Notepad());
lenovo->Run();
lenovo->setsoft(new QtCreator());
lenovo->Run();
cout << endl;
Computer* dale = new Dale();
dale->setsoft(new Notepad());
dale->Run();
dale->setsoft(new QtCreator());
dale->Run();
system("pause");
return 0;
}
输出:
联想电脑正在开机...
运行Notepad++软件
运行QtCreator软件
戴尔电脑正在开机...
运行Notepad++软件
运行QtCreator软件
请按任意键继续. . .