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

Posted 炼狱腾蛇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程思想设计模式策略模式相关的知识,希望对你有一定的参考价值。

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版

大话设计模式

以上是关于编程思想设计模式策略模式的主要内容,如果未能解决你的问题,请参考以下文章

java编程思想第四版第九章总结

五种常见的 PHP 设计模式

策略模式

java编程思想

java编程思想

策略者模式