java对数据的抽象与对行为的抽象
我正在读一本关于Java中Lambdas表达式的书,我偶然发现了这句话
The difference is that object-oriented programming is mostly about abstracting over
data, while functional programming is mostly about abstracting over behavior.
有人能和蔼可亲地解释一下上面这句话中提到的区别吗
你可以在下面搜索框中键入要查询的问题!
我正在读一本关于Java中Lambdas表达式的书,我偶然发现了这句话
The difference is that object-oriented programming is mostly about abstracting over
data, while functional programming is mostly about abstracting over behavior.
有人能和蔼可亲地解释一下上面这句话中提到的区别吗
# 1 楼答案
我会这样写:“区别在于,面向对象编程主要是关于实时对象之间的关系和通信,而函数式编程主要是面向期望的结果。”
当您使用OOP语言时,给定的域通常对您非常重要。另一方面,对于函数式语言,您不关心域,只关心应该实现的确定性结果
# 2 楼答案
具有讽刺意味的是,当人们试图将FP与其他范式进行比较时,可以提出无限的类比
在这种特殊情况下,一旦你明白了“抽象某件事”的含义,你就可以解开这个谜团了
对某事物进行抽象意味着你隐藏该事物的细节,并提供抽象以访问该事物,从而使外部世界看不到该事物的细节
应用上述理论,我们可以得出:
在OOP中,您将隐藏数据的细节,并提供抽象(接口、类等)来访问数据
在FP中,您将隐藏行为的细节,并提供抽象(模块,即一组函数)来访问行为