经典的设计模式有 23 个,虽然设计模式都是常用代码的总结,理论上来说与语法无关。但不得不承认的是,标准的设计模式在不同的语言中,有的因为语法的限制根本无法轻易实现(比如在 C 语言中实现组合模式),有的则因为语言的特定功能,变得冗余啰嗦。
然而这些对象本身并没有作用,它们仅仅是可以调用相同的方法而已,只不过在 Java 中,所有的任务都需要由对象来完成。即使策略本身就是一个函数,但也必须把它包裹在一个策略对象中。所以在 Python 中更优雅写法是直接把策略函数作为变量使用。不过这就引入一个问题,如何判断某个函数是个策略呢,毕竟在面向对象的写法中,只要检查它的父类是否是抽象的策略类即可。
@strategy
def strategyA(n):
print(n * 2)