单一职责原则经典例子
时间: 2023-10-25 07:09:42 浏览: 108
单一职责原则是面向对象设计中的一个重要原则,它要求一个类只负责一项职责。这样可以提高类的内聚性,降低类的耦合性,使得类更加易于维护和扩展。下面是一个经典的例子:
假设我们要设计一个图形类,它可以绘制不同形状的图形,比如圆形、矩形、三角形等。如果我们把所有的绘制逻辑都放在一个类中,那么这个类就会变得非常臃肿,而且难以维护和扩展。因为每当我们需要添加一种新的图形时,就需要修改这个类的代码,这样就会影响到其他已经实现的图形。
为了遵循单一职责原则,我们可以将图形类拆分成多个子类,每个子类只负责绘制一种图形。比如,我们可以定义一个圆形类、一个矩形类、一个三角形类等。这样每个子类只需要关注自己的绘制逻辑,不需要关心其他图形的实现细节。这样就可以提高代码的可维护性和可扩展性。
相关问题
详细用c语言展示单一职责原则
单一职责原则(SRP)是面向对象设计中的一个重要原则,指的是一个类或者结构体应该只有一个单一的功能。在C语言中,单一职责原则可以通过以下几种方式来体现:
1. 函数的单一职责
在C语言中,函数是一个非常重要的代码组织方式。在设计函数时,应该将函数的职责尽量单一化,即一个函数只完成一个具体的任务。以下是一个例子:
```c
// 一个函数只负责计算两个整数的和
int add(int a, int b) {
return a + b;
}
// 一个函数只负责计算两个整数的差
int sub(int a, int b) {
return a - b;
}
```
在这个例子中,我们将计算两个整数的和和差的功能分别封装在了两个不同的函数中,实现了函数的单一职责。
2. 结构体的单一职责
在C语言中,结构体可以用来组织不同的数据类型,以便于程序员管理和使用。在设计结构体时,应该将结构体的职责尽量单一化,即一个结构体只存储一组相关的数据。以下是一个例子:
```c
// 一个结构体只负责存储学生的姓名
typedef struct {
char name[20];
} Student;
// 一个结构体只负责存储学生的年龄
typedef struct {
int age;
} StudentAge;
// 一个结构体只负责存储学生的成绩
typedef struct {
float score;
} StudentScore;
```
在这个例子中,我们将学生的姓名、年龄和成绩分别封装在了三个不同的结构体中,实现了结构体的单一职责。
3. 文件的单一职责
在C语言中,文件是一个非常重要的代码组织方式。在设计文件时,应该将文件的职责尽量单一化,即一个文件只负责实现一个具体的功能。以下是一个例子:
```c
// 文件A只负责实现加法运算
int add(int a, int b) {
return a + b;
}
// 文件B只负责实现减法运算
int sub(int a, int b) {
return a - b;
}
```
在这个例子中,我们将加法运算和减法运算分别封装在了两个不同的文件中,实现了文件的单一职责。
综上所述,单一职责原则在C语言中的体现方式与面向对象设计中的体现方式类似,都是将职责尽量单一化,以提高代码的可维护性和可扩展性。
使用c语言展示 单一职责原则
在C语言中,单一职责原则可以通过将一个函数或者一个结构体的功能尽量单一化来体现。下面是一个简单的例子:
```c
#include <stdio.h>
// 一个结构体只负责存储学生的姓名
typedef struct {
char name[20];
} Student;
// 一个函数只负责打印学生的姓名
void printStudentName(Student stu) {
printf("Student name is: %s\n", stu.name);
}
int main() {
Student stu = {"Tom"};
printStudentName(stu);
return 0;
}
```
在这个例子中,我们将一个结构体的职责限定为只存储学生的姓名,将一个函数的职责限定为只打印学生的姓名。这样可以使结构体和函数的职责变得简单明了,易于维护和修改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)