本文章属于专栏- 概述 - 《设计模式(极简c++版)》-CSDN博客
本章简要说明适配器模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。
模式说明
- 方案: 适配器模式,允许接口不兼容的类能够相互合作。它充当两个不兼容接口之间的桥梁。
- 优点:
- 解耦性增强: 允许不兼容的接口之间进行通信,降低系统组件间的耦合度。
- 复用性增加: 可以重复使用现有的类,而不需要修改其原始代码。
- 缺点:
- 过多的适配器类: 如果系统中接口不兼容的类过多,可能会引入过多的适配器类,导致类的数量增加,复杂性提高。
本质思想:适配器模式通过引入一个适配器类来兼容不同接口,使得原本无法一起工作的类能够相互合作。它将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不匹配而无法在一起工作的类能够协同工作。
实践建议:合并多个不同的类,提供同一的调用接口,是在应用维护中使用,以解决设计时未考虑到的共性问题。
代码示例
#include <iostream>
// 鸟类
class Bird {
public:
virtual void fly() const = 0;
};
// 鸭子类
class Duck {
public:
void quack() const {
std::cout << "Quack" << std::endl;
}
void lowAltitudeFly() const {
std::cout << "Duck flying at low altitude" << std::endl;
}
};
// 鸟适配器类,将鸭子适配成鸟类
class BirdAdapter : public Bird {
private:
Duck duck;
public:
void fly() const override {
duck.lowAltitudeFly();
}
};
// 客户端代码
int main() {
Duck duck;
BirdAdapter birdAdapter;
std::cout << "Duck:" << std::endl;
duck.lowAltitudeFly();
std::cout << "BirdAdapter:" << std::endl;
birdAdapter.fly();
/*
输出:
Duck:
Duck flying at low altitude
BirdAdapter:
Duck flying at low altitude
*/
return 0;
}