本文章属于专栏《设计模式(极简c++版)》
继续上一篇《原型模式(极简c++)》。本章简要说明适配器模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。
模式说明
- 方案: 适配器模式,允许接口不兼容的类能够相互合作。它充当两个不兼容接口之间的桥梁。
- 优点:
- 解耦性增强: 允许不兼容的接口之间进行通信,降低系统组件间的耦合度。
- 复用性增加: 可以重复使用现有的类,而不需要修改其原始代码。
- 缺点:
- 过多的适配器类: 如果系统中接口不兼容的类过多,可能会引入过多的适配器类,导致类的数量增加,复杂性提高。
本质思想:适配器模式通过引入一个适配器类来兼容不同接口,使得原本无法一起工作的类能够相互合作。它将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不匹配而无法在一起工作的类能够协同工作。
实践建议:合并多个不同的类,提供同一的调用接口,是在应用维护中使用,以解决设计时未考虑到的共性问题。
代码示例
#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;
}