python设计模式(二)--策略模式(上)

最近正在持续更新源码库,代码都是参考大话设计模式翻成python版,完整代码片段请到github上去下载.

https://github.com/zhengtong0898/python-patterns

 

参考:

    书籍<<大话设计模式>> 第二章 2.4小节

 

Python 3.x

# -.- coding:utf-8 -.-
# __author__ = 'zhengtong'
# 策略模式定义了算法家族,分类封装起来,让他们之间可以相互替换,
# 此模式让算法的变化不会影响到使用算法的客户。


class Strategy:

    """策略"""
    def __init__(self, strategy):
        self.strategy = strategy

    def context_interface(self):
        self.strategy.algorithm_interface()


class Algorithm:
    
    """算法抽象类"""

    def algorithm_interface(self):
        raise NotImplementedError


class ImplementA(Algorithm):
    
    """算法A"""

    def algorithm_interface(self):
        print('算法A实现')


class ImplementB(Algorithm):

    """算法B"""

    def algorithm_interface(self):
        print('算法B实现')


class ImplementC(Algorithm):
    
    """算法C"""    

    def algorithm_interface(self):
        print('算法C实现')


def main():
    context = Strategy(ImplementA())
    context.context_interface()

    context = Strategy(ImplementB())
    context.context_interface()

    context = Strategy(ImplementC())
    context.context_interface()

if __name__ == '__main__':
    main()

 

你可能感兴趣的:(python设计模式(二)--策略模式(上))