Bridge桥接模式C++

 

 

#pragma once
//os.h
#ifndef OS_H
#define OS_H

class os
{
public:
	virtual ~os(){	}

	virtual void on() = 0;
	virtual void off() = 0;
};

#endif // !OS_H

 

#include <iostream>
using namespace std;

class wins :public os
{
public:
	virtual void on() override 
	{
		cout <<"启动windows" << endl;
	}
	virtual void off() override
	{
		cout << "关闭windows" << endl;
	}
};

class linux :public os
{
public:
	virtual void on() override
	{
		cout << "启动linux" << endl;
	}
	virtual void off() override
	{
		cout << "关闭linux" << endl;
	}
};

#endif // !CONCRETEOS_H
#pragma once
//computer.h
#ifndef COMPUTER_H
#define COMPUTER_H

#include "os.h"
class computer
{
public:
	computer(os *oss) { os1 = oss; }
	virtual ~computer(){	}

	virtual void on() = 0;
	virtual void off() = 0;
protected:
	os *os1;
};



#endif // !COMPUTER_H
#pragma once
//concretecomputer.h
#ifndef CONCRETECOMPUTER_H
#define CONCRETECOMPUTER_H

#include "computer.h"
#include <iostream>
using namespace std;

class dellcomputer :public computer
{
public:
	dellcomputer(os *oss) :computer(oss) {}
	virtual void on()override
	{
		cout << "dell物理开机"<< endl;
		os1->on();
	}
	virtual void off()override
	{
		os1->off();
		cout << "dell物理关机" << endl;
	}
};

class asuscomputer :public computer
{
public:
	asuscomputer(os *oss) :computer(oss) {}
	virtual void on()override
	{
		cout << "asus物理开机" << endl;
		os1->on();
	}
	virtual void off()override
	{
		os1->off();
		cout << "asus物理关机" << endl;
	}
};

#endif // !CONCRETECOMPUTER_H
//main.cpp


#include "concretecomputer.h"
#include "concreteos.h"

int main()
{
	os *Wins = new wins();
	os *Linux = new linux();

	computer *Dell = new dellcomputer(Wins);
	computer *Asus = new asuscomputer(Linux);

	Dell->on();
	Dell->off();

	Asus->on();
	Asus->off();

	delete (Asus);
	Asus = NULL;
	delete (Dell);
	Dell = NULL;
	delete (Linux);
	Linux = NULL;
	delete (Asus);
	Asus = NULL;

	system("pause");
	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值