此为设计模式第八谈!
用总-分-总的结构和生活化的例子给你讲解设计模式!
码农不易,各位学者学到东西请点赞收藏支持支持!
开始部分:
总:适配器模式主要解决的问题是已有类的接口与所需的接口不匹配的问题。
分:
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;
}