请举一个违反开闭原则的例子
时间: 2024-03-13 13:45:04 浏览: 21
一个违反开闭原则的例子是,在一个计算器程序中,如果我们直接在原有代码中添加了一个新的运算类型,而不是通过添加新的代码来实现。例如,我们可以在原有代码中添加一个新的运算类型`ModuloOperation`,用于计算两个数的余数,如下所示:
```python
class Operation:
def calculate(self, num1, num2):
pass
class AddOperation(Operation):
def calculate(self, num1, num2):
return num1 + num2
class SubtractOperation(Operation):
def calculate(self, num1, num2):
return num1 - num2
class MultiplyOperation(Operation):
def calculate(self, num1, num2):
return num1 * num2
class DivideOperation(Operation):
def calculate(self, num1, num2):
if num2 == 0:
raise ZeroDivisionError('division by zero')
return num1 / num2
# 直接在原有代码中添加了一个新的运算类型
class ModuloOperation(Operation):
def calculate(self, num1, num2):
return num1 % num2
```
这样做的问题是,如果我们需要添加更多的运算类型,就需要不断地修改现有的代码,这样会增加代码的复杂度,并且可能会影响到其他部分的功能。此外,如果我们需要删除某个运算类型,也需要修改现有的代码,这样可能会破坏其他部分的功能。
因此,违反了开闭原则会导致代码难以扩展和维护,增加了代码的复杂度和维护成本。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)