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;
}
相关推荐
.jc71 小时前
C/C++/EasyX——入门图形编程(5)
c语言·c++·visual studio
雨疏风骤661 小时前
10.8作业
开发语言·c++·学习
最近在研究什么2 小时前
C++关于链表基础知识
开发语言·c++·链表
月夕花晨3742 小时前
C++学习笔记(55)
c++·笔记·学习
写进メ诗的结尾。2 小时前
std::list
c++
福楠3 小时前
[LeetCode] 143. 重排链表
数据结构·c++·算法·leetcode·链表
无夜_3 小时前
Builder(建造者模式)
开发语言·c++
zeroner_3 小时前
【C++】空指针和野指针
开发语言·c++
Rookie也要加油3 小时前
05_23 种设计模式之《建造者模式》
c++·设计模式·建造者模式