-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathmain.py
More file actions
34 lines (26 loc) · 1019 Bytes
/
Copy pathmain.py
File metadata and controls
34 lines (26 loc) · 1019 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from behaviours import DuckHuntFlyBehaviour
from behaviours import SimpleFlyBehaviour
from behaviours import SimpleQuackBehaviour
from behaviours import SimpleSwimBehaviour
from Duck import Duck
def main() -> None:
duck = Duck()
duck.set_fly_behaviour(SimpleFlyBehaviour())
duck.set_quack_behaviour(SimpleQuackBehaviour())
duck.set_swim_behaviour(SimpleSwimBehaviour())
duck.fly()
duck.quack()
duck.swim()
print()
# Тот же класс утки, другое поведение полёта. Ни одного нового наследника.
duck_hunt = Duck()
duck_hunt.set_fly_behaviour(DuckHuntFlyBehaviour())
duck_hunt.set_quack_behaviour(SimpleQuackBehaviour())
duck_hunt.fly()
duck_hunt.quack()
print()
# Поведение можно заменить и во время работы: утка устала убегать.
duck_hunt.set_fly_behaviour(SimpleFlyBehaviour())
duck_hunt.fly()
if __name__ == "__main__":
main()