File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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 ()
You can’t perform that action at this time.
0 commit comments