strategy.py 930 B

123456789101112131415161718192021222324252627282930313233
  1. '''http://stackoverflow.com/questions/963965/how-is-this-strategy-pattern-written-in-python-the-sample-in-wikipedia'''
  2. import types
  3. class StrategyExample:
  4. def __init__(self, func=None):
  5. self.name = "Strategy Example 0"
  6. if func :
  7. self.execute = types.MethodType(func, self)
  8. def execute(self):
  9. print(self.name)
  10. def executeReplacement1(self):
  11. print(self.name + " from execute 1")
  12. def executeReplacement2(self):
  13. print(self.name + " from execute 2")
  14. if __name__ == "__main__":
  15. strat0 = StrategyExample()
  16. strat1 = StrategyExample(executeReplacement1)
  17. strat1.name = "Strategy Example 1"
  18. strat2 = StrategyExample(executeReplacement2)
  19. strat2.name = "Strategy Example 2"
  20. strat0.execute()
  21. strat1.execute()
  22. strat2.execute()