请用C语言写一个Replace Type Code with Classes重构前后代码对比
时间: 2024-03-14 21:45:40 浏览: 66
假设我们现在有一个图形类,其中包含了三种不同类型的图形:矩形、圆形和三角形。这个类使用一个整型变量来表示图形的类型,我们需要使用Replace Type Code with Classes重构手法来改善这个类的设计。
重构前的代码如下:
```c
enum ShapeType {
Rectangle,
Circle,
Triangle
};
struct Shape {
enum ShapeType type;
double width;
double height;
double radius;
double base;
double height;
};
void drawShape(struct Shape* shape) {
switch (shape->type) {
case Rectangle:
// draw rectangle
break;
case Circle:
// draw circle
break;
case Triangle:
// draw triangle
break;
}
}
```
重构后的代码如下:
```c
struct Shape {
double width;
double height;
double radius;
double base;
double height;
};
struct Rectangle {
struct Shape shape;
};
struct Circle {
struct Shape shape;
};
struct Triangle {
struct Shape shape;
};
void drawShape(struct Shape* shape) {
// draw shape
}
void drawRectangle(struct Rectangle* rectangle) {
drawShape(&(rectangle->shape));
}
void drawCircle(struct Circle* circle) {
drawShape(&(circle->shape));
}
void drawTriangle(struct Triangle* triangle) {
drawShape(&(triangle->shape));
}
```
通过Replace Type Code with Classes重构手法,我们将图形类分成了三个子类,分别表示矩形、圆形和三角形,每个子类都包含了一个Shape结构体,用来表示图形的属性。同时,我们将原来的drawShape函数拆分成了三个函数,用来分别绘制不同类型的图形。这样做的好处是,可以使代码更加模块化、易于扩展和维护。
阅读全文