Skip to content

Commit 7e6309c

Browse files
committed
Behavorial pattern => State
1 parent 7097a44 commit 7e6309c

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

state2.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
"""
2+
Behavioral pattern:
3+
State
4+
Example:
5+
switch between several state
6+
"""
7+
8+
9+
class State:
10+
def operate(self):
11+
print(f'Turning Tv {self.status}')
12+
13+
14+
class TurnOn(State):
15+
def __init__(self, tv):
16+
self.tv = tv
17+
self.status = 'On'
18+
19+
def change_state(self):
20+
print('Changing stat to off...')
21+
self.tv.state = self.tv.off
22+
23+
24+
class TurnOff(State):
25+
def __init__(self, tv):
26+
self.tv = tv
27+
self.status = 'Off'
28+
29+
def change_state(self):
30+
print('Changing state to On...')
31+
self.tv.state = self.tv.on
32+
33+
34+
class Tv:
35+
def __init__(self):
36+
self.on = TurnOn(self)
37+
self.off = TurnOff(self)
38+
self.state = self.on
39+
40+
def press(self):
41+
self.state.operate()
42+
self.state.change_state()
43+
44+
45+
if __name__ == '__main__':
46+
t = Tv()
47+
t.press()
48+
t.press()
49+
t.press()

0 commit comments

Comments
 (0)