《适配器模式(极简c++)》

        本文章属于专栏- 概述 - 《设计模式(极简c++版)》-CSDN博客


        本章简要说明适配器模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。

模式说明

  • 方案: 适配器模式,允许接口不兼容的类能够相互合作。它充当两个不兼容接口之间的桥梁。
  • 优点:
    • 解耦性增强: 允许不兼容的接口之间进行通信,降低系统组件间的耦合度。
    • 复用性增加: 可以重复使用现有的类,而不需要修改其原始代码。
  • 缺点:
    • 过多的适配器类: 如果系统中接口不兼容的类过多,可能会引入过多的适配器类,导致类的数量增加,复杂性提高。

本质思想:适配器模式通过引入一个适配器类来兼容不同接口,使得原本无法一起工作的类能够相互合作。它将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不匹配而无法在一起工作的类能够协同工作。

实践建议:合并多个不同的类,提供同一的调用接口,是在应用维护中使用,以解决设计时未考虑到的共性问题。

代码示例

#include 

// 鸟类
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;
}

 

你可能感兴趣的:(设计模式(极简c++版),c++,设计模式,适配器模式)