2:策略模式

 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)
原文地址:https://www.cnblogs.com/pengsixiong/p/4865604.html