C++ 设计模式-适配器模式
#include <iostream>
#include <memory>
#include <stdexcept>
// 抽象目标接口:通用电源接口
class PowerOutlet {
public:
virtual ~PowerOutlet() = default;
virtual int outputPower() const = 0;
virtual std::string plugType() const = 0;
};
// 具体目标接口1:中国标准USB插座 (期望5V)
class ChinaUSBSocket : public PowerOutlet {
public:
int outputPower() const override {
return 5; }
std::string plugType() const override {
return "USB-A"; }
};
// 具体目标接口2:欧洲标准插座 (期望12V)
class EuropeSocket : public PowerOutlet {
public:
int outputPower() const override {
return 12; }
std::string plugType() const override {
return "Europlug"; }
};
// 被适配类集合---------------------------------
class ChineseWallOutlet {
// 中国标准220V
public:
int output220V() const {
return 220; }
std::string shape() const {
return "Flat 3-pin"; }
};
class AmericanOutlet {
// 美国标准110V
public