Preserve Whole Object示例
时间: 2023-07-12 21:36:46 浏览: 47
假设有一个名为“温度”的类,该类包含两个属性:温度值(temperature)和单位(unit)。我们现在需要编写一个名为“温度转换器”的函数,将华氏度转换为摄氏度。使用保持对象完整重构手法,代码如下:
```python
# 原始代码
class Temperature:
def __init__(self, temperature, unit):
self.temperature = temperature
self.unit = unit
def convert_fahrenheit_to_celsius(temperature):
if temperature.unit == 'F':
celsius = (temperature.temperature - 32) * 5 / 9
return Temperature(celsius, 'C')
else:
return temperature
# 重构后的代码
class Temperature:
def __init__(self, temperature, unit):
self.temperature = temperature
self.unit = unit
def to_celsius(self):
if self.unit == 'F':
celsius = (self.temperature - 32) * 5 / 9
return Temperature(celsius, 'C')
else:
return self
t1 = Temperature(32, 'F')
t2 = t1.to_celsius()
print(t2.temperature, t2.unit) # 输出 "0.0 C"
```
在重构后的代码中,我们将温度转换功能添加到“温度”类中,使得代码更加简单和易于维护。我们现在可以创建一个名为“t1”的温度对象,然后通过调用“to_celsius”方法将其转换为摄氏度。最后,我们可以访问转换后的温度对象的属性,以获取摄氏度和单位。