1 class Strategy:
2
3 def result(self,original):
4 return print(original)
5
6 class NormalStrategy(Strategy):
7 pass
8
9 class BargainStrategy(Strategy):
10 def __init__(self,discount):
11 self.discount = discount
12
13 def result(self,original):
14 return print(self.discount*original)
15
16 class CashBackStrategy(Strategy):
17
18 def __init__(self,limit,back):
19 self.limit = limit
20 self.back = back
21
22 def result(self,original):
23 if(original>=self.limit):
24 original -= self.back
25 return print(original)
26
27 class Context():
28
29 def __init__(self,classname): #对象实例化并且调用其方法
30 self.classname = classname
31
32 def GetResult(self,original):
33 return print(self.classname.result(original)) #由于是普通方法,所以可以用类名来调用
34
35 original = int(input('输入原价:')) #对外仅仅暴露Context类
36 strategy = (input('请输入打折模式:(正常/8折/满300减100):'))
37 if(strategy =='正常'):
38 Context(NormalStrategy()).GetResult(original)
39 elif(strategy == '8折'):
40 Context(BargainStrategy(0.8)).GetResult(original)
41 if(strategy == '满300减100'):
42 Context(CashBackStrategy(300,100)).GetResult(original)