0
点赞
收藏
分享

微信扫一扫

Django报错

云卷云舒xj 2024-09-10 阅读 18

一、桥接模式概念

适配器设计模式的结构

适配器实现了其中一个对象的接口, 并对另一个对象进行封装。

代码如下:

#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;
}
举报

相关推荐

0 条评论