适配器模式(C++)

介绍

作用: 作为两个不兼容接口之间的桥梁,属于结构型模式.

何时使用:

  • 系统需要使用现有类,但是该类的接口并不符合系统的要求;
  • 通过接口转换,将一个类插入到另一个类中.

关键方案: 继承或依赖(推荐).

优点:

  • 可以将现有的类转换成系统可以使用类;
  • 提高了类的复用;
  • 增加类的透明度

缺点:

  • 过多地使用适配器,或让系统非常凌乱

UML

image

示例

组合实现适配器:


//双端队列,需适配的对象
class Deque{
public:
    void push_back(int x);
    void push_front(int x);
    void pop_back();
    void pop_front();
};

//接口,向外暴露
class Sequence{
public:
    virtual void push(int x) = 0;
    virtual void pop() = 0;
}

//单端队列
class Queue : public Sequence{
public:
     void push(int x) override {
         deque_.push_back(x);
     }
     void pop() override {
         deque_.pop_front();
     }
private:
    Deque deque_;
};

这个是组合实现的适配器,还可以使用继承,不过因为继承的强依赖性,一般会推荐使用组合来实现 :

//双端队列
class Deque{
public:
    void push_back(int x);
    void push_front(int x);
    void pop_back();
    void pop_front();
};

class Sequence{
public:
    virtual void push(int x) = 0;
    virtual void pop() = 0;
}

//单端队列
class Queue : public Deque, public Sequence {
public:
     void push(int x) override {
         push_back(x);
     }
     void pop() override {
         pop_front();
     }
};

适配器模式/装饰模式/代理模式的区别?

  • 适配器的特点在于兼容: 是将一个类(a)通过某种方式转换成另一个类(b);
  • 装饰器模式特点在于增强: 在一个原有类(a)的基础之上增加了某些新的功能变成另一个类(b);
  • 代理模式的特点在于隔离: 将一个类(a)转换成具体的操作类(b) .

原文链接: https://www.cnblogs.com/xl2432/p/13130059.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    适配器模式(C++)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/355234

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午9:07
下一篇 2023年3月2日 上午9:07

相关推荐