[Python模式]策略模式

策略模式

定义了算法族,分别封装起来,让它们之间可以互相替换。此模式让算法的变化独立于使用算法的客户。

作为动态语言,Python实现策略模式非常容易,只要所有算法提供相同的函数即可。

import os

class Script:
    def __init__(self, cmd):
        self._cmd = cmd

    def run_by(self, runner):
        runner.run(self._cmd)

class Runner:
    def run(self, cmd):
        os.system(cmd)

class MockRunner:
    def run(self, cmd):
        print "Run", cmd


if __name__ == "__main__":
    s = Script("echo test")
    s.run_by(Runner())
    s.run_by(MockRunner())