06_23 种设计模式之《适配器模式》

文章目录

一、适配器模式基础知识

适配器模式定义:将一个类的接口转换成客户希望的另一个接

口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可

以一起工作。

Client:客户端,调用自已需要的领域接口 Target。

Target:定义客户端需要的跟特定领域的相关接口。

Adaptee:已经存在的接口,通常能满足客户端的功能要求,但

是接口与客户端要求的特定领域接口不一致,需要被适配。

Adapter:适配器,把 Adaptee 适配成为 Client 需要的 Target。

1、适配器模式:作为两个不兼容的接口之间的桥梁。它属于结构体

型模式,结合两个独立接口的功能。

2、主要解决:解决在软件系统当中,将一些"现存的对象"放到新

的环境当中,而新环境要求的接口是现对象不能满足的。

3、优点:可以让任何两个没有关联的类一起执行;为了提高类的利

用;增加类的透明度;灵活性更好。

4、缺点:适配器使用过多,让整个系统非常零乱,不容易整体进行

把控

实例

cpp 复制代码
#include <iostream>
using namespace std;

// 我们要定义客户端使用的接口,与特殊领域相关的
class Target {
public:
    virtual void RequestFunc() = 0;
    virtual ~Target() {
        cout << "调用Target类析构函数." << endl;
    }
};

// 已经存在的接口,这个接口需要被适配
class Adaptee {
public:
    void SpecificRequestFunc() {
        cout << "\nAadaptee类特殊请求处理实现模块.\n" << endl;
    }
    ~Adaptee() {
        cout << "调用Adaptee类析构函数." << endl;
    }
};

// 适配器,将现在接口转为需要的接口
class Apapter :public Target {
private:
    Adaptee* adaptee;

public:
    Apapter() {
        adaptee = new Adaptee();
        cout << "调用Apapter类构造函数." << endl;
    }

public:
    virtual void RequestFunc() { // 可以转调已经实现的方法,进行适配

        adaptee->SpecificRequestFunc();
    }

    virtual ~Apapter() {
        if (adaptee != NULL)
        {
            delete adaptee;
            adaptee = NULL;
        }
        cout << "调用Apapter类析构函数." << endl;
    }   
};


int main()
{
    // 创建客户端需要调用的接口对象
    Target* target = new Apapter();

    target->RequestFunc(); // 请求处理操作

    if (target != NULL)
    {
        delete target;
        target = NULL;
    }
    
    return 0;
}
相关推荐
2301_803554521 小时前
c++中类的前置声明
java·开发语言·c++
LyaJpunov9 天前
深入理解 C++ volatile 与 atomic:五大用法解析 + 六大高频考点
c++·面试·volatile·atomic
小灰灰搞电子9 天前
Qt PyQt与PySide技术-C++库的Python绑定
c++·qt·pyqt
时空自由民.9 天前
C++ 不同线程之间传值
开发语言·c++·算法
Ray_19979 天前
C++二级指针的用法指向指针的指针(多级间接寻址)
开发语言·jvm·c++
双叶8369 天前
(C语言)Map数组的实现(数据结构)(链表)(指针)
c语言·数据结构·c++·算法·链表·哈希算法
Jay_5159 天前
C++ STL 模板详解:由浅入深掌握标准模板库
c++·学习·stl
勤奋的知更鸟9 天前
Java 编程之责任链模式
java·开发语言·设计模式·责任链模式
Cyrus_柯9 天前
C++(面向对象编程——继承)
开发语言·c++·算法·面向对象
逆袭的菜鸟X9 天前
JS常用设计模式汇总
开发语言·javascript·设计模式