设计模式之桥接模式实例(c++)

桥接模式:

桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称柄体模式或者接口模式。

桥接模式实例之模拟毛笔:

模拟毛笔类图:

实现类接口Color(颜色类) :

//实现类接口Color(颜色类)
class Color{
public:
	virtual void bepaint(string penType,string name) = 0;
}; 

具体实现类Red :

class Red : public Color{
public:
	void bepaint(string penType,string name){
		cout << penType + "红色的" + name + "." << endl;
	}
};

具体实现类Green:

class Green : public Color{
public:
	void bepaint(string penType,string nam
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、付费专栏及课程。

余额充值