请用C语言写一个Replace Type Code with Subclasses 重构前后代码对比
时间: 2024-03-14 22:45:45 浏览: 79
假设我们现在有一个员工类,其中包含了两种不同类型的员工:普通员工和经理。这个类使用一个整型变量来表示员工的类型,我们需要使用Replace Type Code with Subclasses重构手法来改善这个类的设计。
重构前的代码如下:
```c
enum EmployeeType {
Employee,
Manager
};
struct Employee {
enum EmployeeType type;
char* name;
double salary;
int level;
};
void printEmployee(struct Employee* employee) {
printf("name: %s\n", employee->name);
printf("salary: %.2f\n", employee->salary);
if (employee->type == Manager) {
printf("level: %d\n", employee->level);
}
}
```
重构后的代码如下:
```c
struct Employee {
char* name;
double salary;
};
struct Manager {
struct Employee employee;
int level;
};
void printEmployee(struct Employee* employee) {
printf("name: %s\n", employee->name);
printf("salary: %.2f\n", employee->salary);
}
void printManager(struct Manager* manager) {
printEmployee(&(manager->employee));
printf("level: %d\n", manager->level);
}
```
通过Replace Type Code with Subclasses重构手法,我们将员工类分成了两个子类,分别表示普通员工和经理,每个子类都包含了一个Employee结构体,用来表示员工的属性。同时,我们将原来的printEmployee函数拆分成了两个函数,用来分别打印不同类型的员工信息。这样做的好处是,可以使代码更加模块化、易于扩展和维护。
阅读全文