优点:1)将可能变化的部分单独封装起来,使得变化产生的影响最小
2)抽象部分和实现部分单独变动,并且每一部分的扩充都不会破坏桥接模式搭起来 的架子
缺点:1)结构比较复杂
2)抽象类的修改影响到子类
#include <iostream>
using namespace std;
//操作系统
class OS
{
public:
virtual void run() = 0;
};
class WindowsOS : public OS
{
public:
void run(){cout << "WindowsOS!" << endl;}
};
class LinuxOS : public OS
{
public:
void run(){cout << "LinuxOS!" << endl;}
};
//电脑品牌
class Computer
{
public:
virtual void installOS(OS *os) = 0;
};
class HP : public Computer
{
public:
void installOS(OS *os){os->run();}
};
class IBM : public Computer
{
public:
void installOS(OS *os){os->run();}
};
int main()
{
WindowsOS *windowsOS = new WindowsOS;
LinuxOS *linuxOS = new LinuxOS;
Computer *computer = new HP;
computer->installOS(windowsOS);
computer->installOS(linuxOS);
return 0;
}
运行结果:
WindowsOS!
LinuxOS!