桥接模式:将抽象部分和它的实现部分分类,使他们可以独立的变化。
当一个抽象类可能有多个实现时,通常使用继承来实现他们。抽象类定义了具体类的公共接口,而子类则用不同的方式实现。这种方法有时不是很灵活,继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分进行修改。
桥接模式可以解决以上问题,将抽象部分和实现部分分别放在独立的类层次结构中。
#include <stdio.h>
//安卓系统基类
class AndroidSys {
public:
virtual void printSys() = 0;
};
class AndroidSys4 :public AndroidSys {
public:
void printSys() {
printf("安卓4.0\n");
}
};
class AndroidSys5 :public AndroidSys {
public:
void printSys() {
printf("安卓5.0\n");
}
};
class AndroidSys6 :public AndroidSys {
public:
void printSys() {
printf("安卓6.0\n");
}
};
//安卓手机基类
class AndroidPhone {
public:
virtual void setSys(AndroidSys* sys) = 0;
};
class HuaWei :public AndroidPhone {
public:
void setSys(AndroidSys* sys) {
printf("华为手机安装操作系统");
sys->printSys();
}
};
class Oppo :public AndroidPhone {
public:
void setSys(AndroidSys* sys) {
printf("Oppo手机安装操作系统");
sys->printSys();
}
};
class XiaoMi :public AndroidPhone {
public:
void setSys(AndroidSys* sys) {
printf("小米手机安装操作系统");
sys->printSys();
}
};
int main() {
AndroidSys* sys4 = new AndroidSys4;
AndroidSys* sys5 = new AndroidSys5;
AndroidSys* sys6 = new AndroidSys6;
AndroidPhone* huaWei = new HuaWei;
AndroidPhone* oppo = new Oppo;
AndroidPhone* xiaoMi = new XiaoMi;
huaWei->setSys(sys4);
huaWei->setSys(sys5);
oppo->setSys(sys6);
xiaoMi->setSys(sys6);
return 0;
}
运行结果: