5.桥模式

在这里插入图片描述
两个方向互不干扰。corp和Product是业务功能,HouseCorp, ShanZhaiCorp,House,IPod是平台实现。

#include<iostream>
#include<string>
#include<vector>
using namespace std;

//抽象总产品类
class Product {
public:
	virtual void beProducted() = 0;
	virtual void beselled() = 0;
	virtual ~Product() {};
};
//房子类(继承产品类)
class House :public Product {
public:
	void beProducted() { cout << "生产出来的房子是这样的" << endl; }
	void beselled() { cout << "生产出来的房子卖出去了" << endl; }

};
//Ipod类(继承产品类)
class IPod :public Product {
	void beProducted() { cout << "生产出来的IPod是这样的" << endl; }
	void beselled() { cout << "生产出来的IPod卖出去了" << endl; }
};
//公司基类。公司和产品之间建立联系
class Corp {
private:
	//组合的方式 公司和产品之间建立联系
	Product* product;
public:
	Corp(Product* product) :product(product) {};
	virtual void makeMoney() {
		product->beProducted();
		product->beselled();
	}
};
//山寨产品生产商
class ShanZhaiCrop :public Corp {
public:
	ShanZhaiCrop(Product* product) :Corp(product) {}
	void makeMoney() {
		Corp::makeMoney();
		cout << "我赚大钱呀" << endl;
	}
};
//房地产商
class HouseCorp :public Corp {
public:
	HouseCorp(House* house) :Corp(house) {}
	void makeMoney(){
		Corp::makeMoney();
		cout << "房地产公司赚大钱了" << endl;
	}
};

int main()
{
	House * house = new House();
	cout << "房地产公司是这样运行的" << endl;
	HouseCorp * housecorp = new HouseCorp(house);
	housecorp->makeMoney();

	cout << "山寨公司是这样运行的" << endl;
	//山寨产品多种多样,现在制定生产ipod
	ShanZhaiCrop * shanzhaicrop = new ShanZhaiCrop(new IPod());
	shanzhaicrop->makeMoney();

	return 0;
	/*
	
		房地产公司是这样运行的
		生产出来的房子是这样的
		生产出来的房子卖出去了
		房地产公司赚大钱了
		山寨公司是这样运行的
		生产出来的IPod是这样的
		生产出来的IPod卖出去了
		我赚大钱呀
	
	*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值