Skip to content

组合(Compose)

分解,组合

使用函数式编程的思想去开发,实际上是将一个复杂的任务分解下若干小任务,然后将这些小任务的解决方案组合起来去解决这个复杂的任务。

考虑单一职责

在函数式编程中,模块化和单一职责挂钩,也就是说我们编写的每个函数应该拥有单一的目的。

函数的组合

函数式编程的组合是松耦合且类型安全的,一个函数的输出作为另外一个函数的输入进行组合。

对比面向对象的链式调用

这和我们在 OOP 开发时常用的链式调用是不一样的,链式调用一般的设计是一个类的方法如果不需要返回其他有作用的值,则返回该实例本身, 那么我们就可以在这个实例上一直调用其拥有的方法。

javascript
// 使用链式调用的一个例子
person.filter(XXX).head(XXX).getName()

这样虽然方便,但是有着很明显的缺点,在链式调用的链上,我们只能使用其实例上的方法,不便于与其他模块进行组合使用。