C++与设计模式(10)——桥接模式
来源:互联网 发布:手机剪辑视频软件知乎 编辑:程序博客网 时间:2024/06/11 00:45
桥接模式
定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化
这种说法可能不太好理解,那我们有另一种说法,桥接模式是将复杂变化的多个维度分开,通过组合的形式进行联系。
举个例子,现在我们要写一个绘图设备(类),它可以画不同颜色不同形状的图形:
先想一个简单的实现,我们的设备拥有绘制所有这些图形的接口:
我们可以发现这么做的话我们的设备的接口会变得非常之多,难以维护和管理,接口内也会出现许多重复代码,增加编程负担,所以这里使用桥接模式。
按照桥接模式的两种说法,我们可以这样理解:
1. DrawDevice的绘制接口所做的事是用‘颜色’绘制‘形状’,那么将‘颜色’和‘形状’这两个抽象部分独立出来。
2. 我们的绘制结果是是由‘颜色’和‘形状’这两个维度决定的,那么把这两个维度分离,让其单独进行变化。
可以看出来虽然说法不同但表达的含义是相同的,那么我们独立出‘颜色’和‘形状’的概念,而设备只提供一个接口。
桥接模式的实现:
//形状类class Shape{public: virtual void readShape(){};};class Triangle : public Shape{public: void readShape() { cout << "Triangle"; }};class Square : public Shape{public: void readShape() { cout << "Square"; }};class Circular : public Shape{public: void readShape() { cout << "Circular"; }};//颜色类class Color{public: virtual void readColor(){};};class Red : public Color{public: void readColor() { cout << "Red "; }};class Yellow : public Color{public: void readColor() { cout << "Yellow "; }};class Blue : public Color{public: void readColor() { cout << "Blue "; }};class DrawDevice{public: void draw(Color *color,Shape *shape) { cout << "draw "; color->readColor(); shape->readShape(); }};int main(){ DrawDevice device; Shape *shape = new Triangle; Color *color = new Red; device.draw(color,shape); return 0;}
0 0
- 设计模式——桥接模式(C++)
- C++与设计模式(10)——桥接模式
- 设计模式_桥接模式(C++)
- C#--设计模式之桥接模式
- C语言设计模式:代理模式、桥接与中介模式 //tbd
- C语言和设计模式(桥接模式)
- C语言和设计模式(桥接模式)
- C语言和设计模式(桥接模式)
- C语言和设计模式(桥接模式)
- 08.C语言和设计模式(桥接模式)
- 19、C语言和设计模式(桥接模式)
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 第三方支付架构设计之—自有账户支付
- 用Ant批量运行TestNG测试用例,并配合Reportng实现报告美化
- 【codevs 1077】多源最短路
- [Dream Team邀请赛]----Money Henry拣钱
- 使用jdbc查询数据库方法及存在的问题
- C++与设计模式(10)——桥接模式
- C/C++:函数的编译方式与调用约定以及extern “C”的使用
- ViewPager 详解(一)---基本入门
- 例题5-2 木块问题 UVa101
- 指针的知识要点
- MySQL从入门到精通_9多表数据记录查询
- Redis集群管理之Redis Cluster集群节点增减
- acm 1406
- 第一个BeautifulSoup爬虫