banzhihuanyu 2020-02-19
参考文章
函数式编程及响应式编程之己见_Java_Tycho‘s Blog-CSDN博客
1、函数式编程是从编码实现的角度来说的,即通过编程语言中的方法(method)来实现数学中函数(function)概念。数学中函数的概念存在一个输入和一个输出,通过对输入进行一定的运算来获得一个输出,从而形成一一对应的关系。那么直接通过让方法拥有一个入参和一个返回值不就满足了吗?这样确实可以,但这只形成了一种模式下的一一对应关系,这唯一的模式即为定义方法时内部指定的逻辑。当需要构建另一种模式下的一一对应关系时,就必须再新建一个方法。当大部分对应模式只有一小部分逻辑不同时,就需要考虑方法复用的问题,即定义方法时只指定对应模式中共有的部分,不同的一小部分逻辑在调用方法时作为参数传入。通过编码层面的方法定义和调用实现数学函数一一对应模式的实时动态确定。当然,对于需要动态确定的一小部分逻辑,可以在编码时通过方法调用时就明确指定,也可以去在运行时根据不同的情况将其作为对象传入。
2、响应式编程是从运行结果的角度来看的。程序的运行结果中至少存在两端,并且对这两端来说,至少可以一端的变化能够引起另一端的变化,也可以两端之间互相引起对方的变化。在实现层面一般通过观察者模式来实现,并且涉及发送、接收和处理的过程。