当前位置:网站首页 > 技术博客 > 正文

桥接模式的uml图



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. 

这个例子中,我们可以通过设置不同的颜色对象来改变图形的填充颜色,而不需要修改图形类的

代码

。这就是

桥接模式

的优势所在。

版权声明


相关文章:

  • javascript脚本可以放在哪些地方2025-09-17 16:00:59
  • 应用层对应的网络协议2025-09-17 16:00:59
  • 网络黑客攻击方法有哪几种2025-09-17 16:00:59
  • ncurses howto2025-09-17 16:00:59
  • 文件权限 linux2025-09-17 16:00:59
  • redis rdb bgsave2025-09-17 16:00:59
  • 如何查看csdn积分2025-09-17 16:00:59
  • python如何运行一个python程序2025-09-17 16:00:59
  • ugui ngui区别2025-09-17 16:00:59
  • 微信小程序源码平台2025-09-17 16:00:59