STUNUM

面有萌色,胸有丘壑。心有猛虎,细嗅蔷薇。

嗨,我是王鑫 (@stunum),一名 Python 开发者。


Python web开发,后端以Django框架为主,前端使用Vue.js...

python设计模式之策略模式

策略模式

意义:

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

适应性:
  • 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
  • 一个系统需要动态地在几种算法中选择一种。
  • 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。
    举例:

    ``` import types

class People(object):

def __init__(self, func=None):
    if func:
        self.speak = types.MethodType(func, self)

def speak(self):
    print("说中文")

def speak_english(self): print(‘说英语’)

def speak_german(self): print(‘说德语’)

if name == ‘main’: test1 = People() test2 = People(speak_english) test3 = People(speak_german) [func.speak() for func in [test1, test2, test3]]


输出结果:

说中文 说英语 说德语 ```

最近的文章

python设计模式之访问者模式

访问者模式意义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。举例:class Finance(object): #财务数据结构类 def __init__(self): self.salesvolume = None # 销售额 self.cost = None # 成本 self.history_salesvolume = ...…

水滴石穿继续阅读
更早的文章

python设计模式之状态模式

状态模式意义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。优点: 封装了转换规则。 枚举可能的状态,在枚举状态之前需要确定状态种类。 将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。 允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块。 可以让多个环境对象共享一个状态对象,从而减少系统中对象的个数。 缺点: 状态模式的使用必然会增加系统类和对象的个数。 状态模式的结构...…

水滴石穿继续阅读