c++桥接模式

#include "stdafx.h"
#include <iostream>

using namespace std;

class SoftWare
{
public:
	virtual void display() = 0;
};

class SoftWareA:public SoftWare
{
	void display() {cout<<"soft a was finished"<<endl;}
};

class SoftWareB:public SoftWare
{
	void display() {cout<<"soft b was finished"<<endl;}
};

class Mobile
{
public:
	virtual void Install(SoftWare* pSoftWare) = 0;
};

class Nokia:public Mobile
{
public:
	void Install(SoftWare* pSoftWare) {pSoftWare->display();}
};

class XiaoMi:public Mobile
{
public:
	void Install(SoftWare* pSoftWare) {pSoftWare->display();}
};

int _tmain(int argc, _TCHAR* argv[])
{
	Mobile* pMobile = new Nokia;
	//SoftWare* pSoftWare = new SoftWareA;
	pMobile->Install(new SoftWareA);
	pMobile->Install(new SoftWareB);
	getchar();
	return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。桥接模式通过将继承关系转化为关联关系,从而实现了解耦。 下面是一个具体的C++桥接模式实例: 假设我们有一个图形类 Shape,它有两个子类:Circle(圆)和Square(正方形)。我们还有一个颜色类 Color,它有两个子类:Red(红色)和Blue(蓝色)。我们希望能够在不修改图形类和颜色类的情况下,动态地组合它们。 首先,我们定义一个抽象类 Shape,其中包含一个指向颜色类的指针: ```cpp class Shape { protected: Color* color; public: virtual void draw() = 0; void setColor(Color* c) { color = c; } }; ``` 然后,我们定义两个具体的图形类 Circle 和 Square,它们都继承自 Shape 类,并实现 draw() 方法: ```cpp class Circle : public Shape { public: void draw() { cout << "Drawing a circle "; color->fill(); } }; class Square : public Shape { public: void draw() { cout << "Drawing a square "; color->fill(); } }; ``` 接下来,我们定义一个抽象类 Color,其中包含一个 fill() 方法: ```cpp class Color { public: virtual void fill() = 0; }; ``` 然后,我们定义两个具体的颜色类 Red 和 Blue,它们都继承自 Color 类,并实现 fill() 方法: ```cpp class Red : public Color { public: void fill() { cout << "with red color." << endl; } }; class Blue : public Color { public: void fill() { cout << "with blue color." << endl; } }; ``` 最后,我们可以使用桥接模式来动态地组合图形和颜色: ```cpp int main() { Shape* shape = new Circle(); Color* color = new Red(); shape->setColor(color); shape->draw(); delete shape; delete color; return 0; } ``` 运行上述代码,输出结果为: ``` Drawing a circle with red color. ``` 这个例子中,我们可以通过设置不同的颜色对象来改变图形的填充颜色,而不需要修改图形类的代码。这就是桥接模式的优势所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值