带你深入浅出设计模式:八、适配器模式:代码世界中的万能转换器

此为设计模式谈!

总-分-总的结构生活化的例子给你讲解设计模式!

码农不易,各位学者学到东西请点赞收藏支持支持!

开始部分:

总:适配器模式主要解决的问题是已有类的接口与所需的接口不匹配的问题

分:

1.老规则,打开vs创建一个控制台应用程序

2.实现编码,这里用了一个国际旅行适配器的例子来辅助理解(假设你是一位经常国际旅行的用户,你有一台来自美国的笔记本电脑,其电源插头是美国标准(Type A或Type B),但你即将前往欧洲旅行,欧洲的插座是不同的标准(Type C或Type F等)。为了解决电源插头不兼容的问题,你购买了一个国际旅行适配器)。

2.1 目标:欧洲的插座标准

2.2 适配者:美国笔记本电脑的电脑插头

2.3 适配器:国际旅行适配器,将美国标准的插头适配为欧洲的插座标准

#include <iostream>
using namespace std;

// 欧洲插座:目标接口
class EuropeanSocket {
public:
    // 提供230V电源
    void providePower230V() const {
        cout << "Providing 230V, 50Hz power." << endl;
    }
};

// 美国电源插头:适配者接口
class USPlug {
public:
    // 需要110V电源
    void usePower110V() const {
        cout << "Using 110V, 60Hz power." << endl;
    }
};

// 旅行适配器:适配器类
class TravelAdapter {
private:
    USPlug* usPlug;

public:
    TravelAdapter(USPlug* plug) : usPlug(plug) {}

    // 适配方法,从欧洲插座获取230V电源,转换为110V并使用
    void convertAndUsePower() const {
        cout << "Adapter is converting 230V to 110V..." << endl;
        usPlug->usePower110V();  // 模拟美国插头使用转换后的110V电源
        cout << "US device is now powered with adapted voltage." << endl;
    }
};

int main() {
    // 创建美国电源插头实例
    USPlug usPlug;
    // 创建旅行适配器实例,传入美国电源插头
    TravelAdapter adapter(&usPlug);
    // 创建欧洲插座实例
    EuropeanSocket europeanSocket;

    // 使用适配器连接美国电源插头和欧洲的插座
    cout << "Connecting US device to European socket via adapter:" << endl;
    europeanSocket.providePower230V();  // 欧洲插座提供230V电源
    adapter.convertAndUsePower();       // 适配器将230V转换为110V后供美国插头使用

    return 0;
}

总:当你想复用一个现有的类,而其接口与当前系统不兼容、或想创建一个可以重用的类,该类与一些已有的类的工作方式相同。可以尝试用适配器模式来进行设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值