|
简单工厂模式:简单理解就是同意类型的类,每个类实现相同的功能函数,将这些函数统一归纳出来,在执行时根据条件来决定执行的是哪一个类中的功能。
代码:以pyboard的四个LED为例。
- 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))
复制代码
写了一大堆代码,其实这个功能用几个if...else...也能实现。确实能实现,而且代码会更少,只不过这里的举例比较简单,而在真正做项目时可能会遇到类似的但是比较复杂的场景,这样就能体现出方便了。
Python中没有switch,所以这种方式在一定程度上也可以代替。
|
|