适配器模式 35mm接口以及25mm接口USB Type-c接口:lighting接口 分别用c++类模式和对象模式完整代码实现耳机接口的转换
C++类模式:
// Target类,目标接口
class Earphone {
public:
virtual void play() = 0;
};
// Adaptee类,被适配接口
class ThreeFiveMillimeterEarphone {
public:
void playWith3_5mm() {
std::cout << "使用3.5mm接口播放音乐" << std::endl;
}
};
class TwoFiveMillimeterEarphone {
public:
void playWith2_5mm() {
std::cout << "使用2.5mm接口播放音乐" << std::endl;
}
};
class UsbTypeCEarphone {
public:
void playWithUsbTypeC() {
std::cout << "使用USB Type-C接口播放音乐" << std::endl;
}
};
class LightingEarphone {
public:
void playWithLighting() {
std::cout << "使用Lighting接口播放音乐" << std::endl;
}
};
// Adapter类,适配器
class ThreeFiveMillimeterEarphoneAdapter : public Earphone {
private:
ThreeFiveMillimeterEarphone* earphone;
public:
ThreeFiveMillimeterEarphoneAdapter(ThreeFiveMillimeterEarphone* earphone) {
this->earphone = earphone;
}
virtual void play() {
earphone->playWith3_5mm();
}
};
class TwoFiveMillimeterEarphoneAdapter : public Earphone {
private:
TwoFiveMillimeterEarphone* earphone;
public:
TwoFiveMillimeterEarphoneAdapter(TwoFiveMillimeterEarphone* earphone) {
this->earphone = earphone;
}
virtual void play() {
earphone->playWith2_5mm();
}
};
class UsbTypeCEarphoneAdapter : public Earphone {
private:
UsbTypeCEarphone* earphone;
public:
UsbTypeCEarphoneAdapter(UsbTypeCEarphone* earphone) {
this->earphone = earphone;
}
virtual void play() {
earphone->playWithUsbTypeC();
}
};
class LightingEarphoneAdapter : public Earphone {
private:
LightingEarphone* earphone;
public:
LightingEarphoneAdapter(LightingEarphone* earphone) {
this->earphone = earphone;
}
virtual void play() {
earphone->playWithLighting();
}
};
// Test
int main() {
Earphone* earphone1 = new ThreeFiveMillimeterEarphoneAdapter(new ThreeFiveMillimeterEarphone());
earphone1->play();
Earphone* earphone2 = new TwoFiveMillimeterEarphoneAdapter(new TwoFiveMillimeterEarphone());
earphone2->play();
Earphone* earphone3 = new UsbTypeCEarphoneAdapter(new UsbTypeCEarphone());
earphone3->play();
Earphone* earphone4 = new LightingEarphoneAdapter(new LightingEarphone());
earphone4->play();
return 0;
}
对象模式:
// Target类,目标接口
class Earphone {
public:
virtual void play() = 0;
};
// Adaptee类,被适配接口
class ThreeFiveMillimeterEarphone {
public:
void playWith3_5mm() {
std::cout << "使用3.5mm接口播放音乐" << std::endl;
}
};
class TwoFiveMillimeterEarphone {
public:
void playWith2_5mm() {
std::cout << "使用2.5mm接口播放音乐" << std::endl;
}
};
class UsbTypeCEarphone {
public:
void playWithUsbTypeC() {
std::cout << "使用USB Type-C接口播放音乐" << std::endl;
}
};
class LightingEarphone {
public:
void playWithLighting() {
std::cout << "使用Lighting接口播放音乐" << std::endl;
}
};
// Adapter类,适配器
class EarphoneAdapter : public Earphone {
private:
ThreeFiveMillimeterEarphone* earphone1;
TwoFiveMillimeterEarphone* earphone2;
UsbTypeCEarphone* earphone3;
LightingEarphone* earphone4;
int type;
public:
EarphoneAdapter(ThreeFiveMillimeterEarphone* earphone) {
earphone1 = earphone;
type = 1;
}
EarphoneAdapter(TwoFiveMillimeterEarphone* earphone) {
earphone2 = earphone;
type = 2;
}
EarphoneAdapter(UsbTypeCEarphone* earphone) {
earphone3 = earphone;
type = 3;
}
EarphoneAdapter(LightingEarphone* earphone) {
earphone4 = earphone;
type = 4;
}
virtual void play() {
switch (type) {
case 1:
earphone1->playWith3_5mm();
break;
case 2:
earphone2->playWith2_5mm();
break;
case 3:
earphone3->playWithUsbTypeC();
break;
case 4:
earphone4->playWithLighting();
break;
default:
break;
}
}
};
// Test
int main() {
Earphone* earphone1 = new EarphoneAdapter(new ThreeFiveMillimeterEarphone());
earphone1->play();
Earphone* earphone2 = new EarphoneAdapter(new TwoFiveMillimeterEarphone());
earphone2->play();
Earphone* earphone3 = new EarphoneAdapter(new UsbTypeCEarphone());
earphone3->play();
Earphone* earphone4 = new EarphoneAdapter(new LightingEarphone());
earphone4->play();
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/hjjI 著作权归作者所有。请勿转载和采集!