C++ 桥接模式是一种结构型
设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。
桥接模式通过将继承关系转化为关联关系,从而实现了解耦。
下面是一个具体的
C++ 桥接模式 实例:
假设我们有一个图形类 Shape,它有两个子类:Circle(圆)和Square(正方形)。我们还有一个颜色类 Color,它有两个子类:Red(红色)和Blue(蓝色)。我们希望能够在不修改图形类和颜色类的情况下,动态地组合它们。
首先,我们定义一个抽象类 Shape,其中包含一个指向颜色类的指针:
class Shape {protected:Color* color;public:virtual void draw() = 0; void setColor(Color* c) {color = c;}};
然后,我们定义两个具体的图形类 Circle 和 Square,它们都继承自 Shape 类,并实现 draw() 方法:
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() 方法:
class Color {public:virtual void fill() = 0;};
然后,我们定义两个具体的颜色类 Red 和 Blue,它们都继承自 Color 类,并实现 fill() 方法:
class Red : public Color {public:void fill() {cout << "with red color." << endl;}};class Blue : public Color {public:void fill() {cout << "with blue color." << endl;}};
最后,我们可以使用
桥接模式来动态地组合图形和颜色:
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.
这个例子中,我们可以通过设置不同的颜色对象来改变图形的填充颜色,而不需要修改图形类的
代码。这就是
桥接模式的优势所在。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/8873.html