|
策略模式:制定各种预案,封装不同的算法,提供相同的接口,根据条件来自动选择使用哪种预案。
代码:
- import pyb
- class IntensityX:
- def Intensity(self, value):
- return 0
- class IntensityValue(IntensityX):
- def Intensity(self, vaule):
- return vaule
- class IntensityPercent(IntensityX):
- pc = 0
- def __init__(self, percent):
- self.pc = percent
- def Intensity(self, value):
- return int(value * self.pc)
-
- class IntensityCut(IntensityX):
- top = 0
- cut = 0
- def __init__(self, t, c):
- self.top = t
- self.cut = c
- def Intensity(self, value):
- if (value >= self.top):
- return value - self.cut
- else:
- return value
- class IntensityLED:
- def __init__(self, intensityX):
- self.super = intensityX
- def GetIntensity(self, value):
- return self.super.Intensity(value)
- if __name__ == "__main__":
- Intensity = IntensityLED(IntensityValue())
- pyb.LED(4).intensity(Intensity.GetIntensity(200))
- pyb.delay(1000)
- Intensity = IntensityLED(IntensityPercent(0.1))
- pyb.LED(4).intensity(Intensity.GetIntensity(255))
- pyb.delay(1000)
- Intensity = IntensityLED(IntensityCut(255, 55))
- pyb.LED(4).intensity(Intensity.GetIntensity(255))
复制代码
提前制定好LED闪烁的频率的方案,按照给定的条件来决定是按照给定的值来执行还是百分比来执行,或者是达到某种条件来执行。
其实比较典型的场景为收费和促销策略,可随意定制满减的条件。
|
|