适配器模式:将一个类的接口转换成客户需要的另外一个接口,是的原本由于接口不兼容而不能一起工作的那些类可以一起工作。
场景:想使用一个类但是它的接口不符合要求。
编写一个计算器的程序,接口已经定义好了,有加法和乘法。在这之前已经写好了一个关于计算加法的类,你想复用这个加法类。但是规定的接口有两个除了加法之外还有乘法,这时适配器就上场了。
#include <stdio.h>
//计算接口
class Calculate{
virtual void add(int a, int b) = 0;
virtual void multiply(int a, int b) = 0;
};
//计算器A
class CalculatorA {
public:
void add(int a, int b) {
printf("计算器A计算两数相加结果为:%d\n", a + b);
}
};
//计算的适配器
class CalculatorAdapter :public Calculate {
public:
CalculatorAdapter(CalculatorA* calculatorA) {
_calculatorA = calculatorA;
}
public:
virtual void add(int a, int b) {
_calculatorA->add(a, b);
}
virtual void multiply(int a, int b) {
printf("装换器计算乘法:%d", a*b);
}
private:
CalculatorA* _calculatorA;
};
int main() {
CalculatorA* calculatorA = new CalculatorA;
CalculatorAdapter* calculatorAdapter = new CalculatorAdapter(calculatorA);
calculatorAdapter->add(4, 5);
calculatorAdapter->multiply(4, 5);
return 0;
}
运行结果: