FluentPythonCh06

5th July 2017 at 10:07am
Fluent Python

这章主要讲函数式编程对比 OOP 编程上的一些优势。

Peter Norvig 在 1996 年发表演讲,认为对于动态语言来讲,23 种设计模式中的 16 种将失去作用或者变得更简单。后来《设计模式》的作者出来说,设计模式主要是针对类似 C++ / SmartTalk 这类静态语言的。

Case Study: Refactoring Strategy

这一节中,讲述了如何用函数式编程取代麻烦的 Strategy 模式。

Strategy Pattern 由 context 和 strategy 两部分构成。strategy 是一个运算过程,对于 C++ 这类非函数式语言,它需要用一套「接口(抽象基类)」+「实现」来实现这种效果,利用 OOP 语言的多态能力实现调用不同的代码块(图中三个具体 Promo 类的 discount() 函数。但是对于函数式语言,你只需要将计算过程(discount() 函数),当作参数传进去就好了。

函数式编程最重要的一点概念,就是要记得运算过程(函数对象)是可以被传递的。你可以实现一个函数,它的行为完全由外部传入的函数参数控制。

Command

这一节讲 Command 模式如何用函数式编程简化。跟上一节的思路类似。