一、桥接模式概念
适配器设计模式的结构:
适配器实现了其中一个对象的接口, 并对另一个对象进行封装。
代码如下:
#include <iostream>
#include <string>
//实现
class Device
{
public:
virtual ~Device()
{
}
virtual std::string turnOn()const = 0;
virtual std::string turnOff()const = 0;
virtual std::string turnOffMute()const = 0;
};
class TV:public Device
{
public:
~TV()
{
}
std::string turnOn() const override
{
return "TV:开机...\n";
}
std::string turnOff()const override
{
return "TV:关机...\n";
}
std::string turnOffMute()const override
{
return "TV:静音...\n";
}
};
class Radio:public Device
{
public:
~Radio()
{
}
std::string turnOn() const override
{
return "TV:开机...\n";
}
std::string turnOff()const override
{
return "TV:关机...\n";
}
std::string turnOffMute()const override
{
return "TV:静音...\n";
}
};
//抽象
class BaseRemoteController
{
protected:
Device* device;
public:
~BaseRemoteController(){}
BaseRemoteController(Device* device):device(device){}
virtual std::string sendTurnOn()
{
return "基础遥控器发出TurnOn"+device->turnOn();
}
virtual std::string sendTurnOff() {
return "基础遥控器发出TurnOff" + device->turnOff();
}
virtual std::string sendTurnOffMute() {
return "基础遥控器发出TurnOffMute" + device->turnOffMute();
}
};
class AdvancedRemoteController :public BaseRemoteController
{
public:
AdvancedRemoteController(Device* device):BaseRemoteController(device){}
std::string sendTurnOn() override
{
return "高级遥控器发出TurnOn" + device->turnOn();
}
std::string sendTurnOff() override
{
return "高级遥控器发出TurnOff" + device->turnOff();
}
std::string sendTurnOffMute() override
{
return "高级遥控器发出TurnOffMute" + device->turnOffMute();
}
};
int main()
{
Radio radio;
BaseRemoteController remote(&radio);
std::cout << remote.sendTurnOn() << std::endl;
std::cout << remote.sendTurnOff() << std::endl;
std::cout << remote.sendTurnOffMute() << std::endl;
std::cout << "-------------------" << std::endl;
AdvancedRemoteController advancedRemote(&radio);
std::cout << advancedRemote.sendTurnOn() << std::endl;
std::cout << advancedRemote.sendTurnOffMute() << std::endl;
std::cout << advancedRemote.sendTurnOff() << std::endl;
return 0;
}