zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    UDP
    TCP
    python基础之socket编程
    单列模式
    元类
    issubclass()和isinstance()
    手持机设备公司(WINCE/ANDROID/LINUX)
    Android Hal 分析
    Android JNI 使用的数据结构JNINativeMethod详解
    MTK GPIO 一些理解
  • 原文地址:https://www.cnblogs.com/pengsixiong/p/4865604.html
Copyright © 2011-2022 走看看