实现小鸟高飞案例。系统中抽象类Sparrow有一个子类BlackSparrow。请利用装饰模式使得小鸟能飞行 150米、180米、210米240及270米. 编写代码实现
时间: 2024-12-13 17:24:15 浏览: 2
在Python中,我们可以使用装饰器(Decorator)模式来实现这种需求,装饰模式允许我们在不改变原有代码的情况下,动态地给一个对象添加新的功能或责任。在这个例子中,我们首先创建一个抽象类`Sparrow`,然后定义一个具体的子类`BlackSparrow`,接着定义一个装饰器`FlyRange`,用于增加飞行距离的功能。
```python
from abc import ABC, abstractmethod
# 抽象类Sparrow
class Sparrow(ABC):
@abstractmethod
def fly(self):
pass
# 子类BlackSparrow
class BlackSparrow(Sparrow):
def __init__(self):
self._distance = 0
def fly(self):
return self._distance
# 装饰器 FlyRange
def FlyRange(distance):
def decorator(fly_method):
def wrapper(sparrow):
# 增加飞行距离并调用原飞方法
sparrow._distance += distance
return fly_method(sparrow)
return wrapper
return decorator
# 使用装饰器让BlackSparrow分别可以飞行指定距离
black_sparrow = BlackSparrow()
black_sparrow = FlyRange(150)(black_sparrow.fly)() # 高飞150米
black_sparrow = FlyRange(30)(black_sparrow.fly)() # 再次装饰,总共飞行180米
# 打印飞行距离
print(black_sparrow) # 输出当前飞行距离
阅读全文