网桥c++
时间: 2023-06-29 16:04:46 浏览: 108
模拟网桥功能实验程序cpp
5星 · 资源好评率100%
网桥(Bridge)是一种设计模式,它允许你将一个大类或者一组紧密关联的类拆分成两个独立的层次结构——抽象接口和实现部分。这样两个层次结构可以独立地扩展。
在C++中,可以使用抽象类来表示抽象接口,而实现部分则可以使用具体类或者另一个抽象类来表示。抽象接口和实现部分之间使用指针或者引用进行通信。
下面是一个简单的网桥模式示例,其中抽象接口为`Shape`类,实现部分为`DrawingAPI`类:
```c++
#include <iostream>
using namespace std;
// DrawingAPI 类表示实现部分
class DrawingAPI {
public:
virtual void drawCircle(double x, double y, double radius) = 0;
};
// DrawingAPI1 和 DrawingAPI2 类表示具体实现部分
class DrawingAPI1 : public DrawingAPI {
public:
void drawCircle(double x, double y, double radius) {
cout << "API1.circle at " << x << ':' << y << ' ' << radius << endl;
}
};
class DrawingAPI2 : public DrawingAPI {
public:
void drawCircle(double x, double y, double radius) {
cout << "API2.circle at " << x << ':' << y << ' ' << radius << endl;
}
};
// Shape 类表示抽象接口
class Shape {
public:
virtual ~Shape() {}
virtual void draw() = 0;
protected:
Shape(DrawingAPI* drawingAPI) : drawingAPI(drawingAPI) {}
DrawingAPI* drawingAPI;
};
// Circle 类表示具体实现部分
class Circle : public Shape {
public:
Circle(double x, double y, double radius, DrawingAPI* drawingAPI)
: Shape(drawingAPI), x(x), y(y), radius(radius) {}
void draw() {
drawingAPI->drawCircle(x, y, radius);
}
private:
double x, y, radius;
};
int main() {
DrawingAPI1 drawingAPI1;
DrawingAPI2 drawingAPI2;
Circle circle1(1, 2, 3, &drawingAPI1);
Circle circle2(4, 5, 6, &drawingAPI2);
circle1.draw();
circle2.draw();
}
```
输出结果为:
```
API1.circle at 1:2 3
API2.circle at 4:5 6
```
可以看到,`Circle`类作为具体实现部分,通过`DrawingAPI`指针调用不同的实现部分来绘制图形。这样,当需要添加新的实现部分时,只需要新建一个`DrawingAPI`的子类即可,而不会影响到现有的抽象接口和具体实现部分。
阅读全文