首页 > 其他 > 详细

【编程思想】【设计模式】策略模式

时间:2018-05-09 18:36:48      阅读:165      评论:0      收藏:0      [点我收藏+]

Python版

转自https://github.com/faif/python-patterns/blob/master/behavioral/strategy.py

技术分享图片
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
http://stackoverflow.com/questions/963965/how-is-this-strategy-pattern
 -written-in-python-the-sample-in-wikipedia
In most of other languages Strategy pattern is implemented via creating some
base strategy interface/abstract class and subclassing it with a number of
concrete strategies (as we can see at
http://en.wikipedia.org/wiki/Strategy_pattern), however Python supports
higher-order functions and allows us to have only one class and inject
functions into it‘s instances, as shown in this example.

*TL;DR80
Enables selecting an algorithm at runtime.
"""

import types


class StrategyExample:

    def __init__(self, func=None):
        self.name = Strategy Example 0
        if func is not None:
            self.execute = types.MethodType(func, self)

    def execute(self):
        print(self.name)


def execute_replacement1(self):
    print(self.name +  from execute 1)


def execute_replacement2(self):
    print(self.name +  from execute 2)


if __name__ == __main__:
    strat0 = StrategyExample()

    strat1 = StrategyExample(execute_replacement1)
    strat1.name = Strategy Example 1

    strat2 = StrategyExample(execute_replacement2)
    strat2.name = Strategy Example 2

    strat0.execute()
    strat1.execute()
    strat2.execute()

### OUTPUT ###
# Strategy Example 0
# Strategy Example 1 from execute 1
# Strategy Example 2 from execute 2
Python转载版

 

Python版

大话设计模式

【编程思想】【设计模式】策略模式

原文:https://www.cnblogs.com/demonzk/p/9015705.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!