抽象数据与抽象行为

时间:2014-06-23 03:03:54

标签: java oop functional-programming abstraction

我正在读一本关于Java中Lambda表达式的书,我遇到了这句话

The difference is that object-oriented programming is mostly about abstracting over
data, while functional programming is mostly about abstracting over behavior.

任何人都可以善待并阐明上述句子中提到的差异吗?

资料来源: http://shop.oreilly.com/product/0636920030713.do

2 个答案:

答案 0 :(得分:1)

具有讽刺意味的是,在尝试将FP与其他范例进行比较时,人们可以提出无限的类比。

在这种特殊情况下,一旦你弄清楚“抽象某事”意味着什么,你就可以解决这个谜语。

对某些内容进行抽象意味着您隐藏某些内容的详细信息并提供抽象来访问该内容,以便外部世界无法看到该内容的详细信息

应用上述理论,我们可以得到:

在OOP中,您可以隐藏数据的详细信息,并提供抽象(接口,类等)来访问数据。

在FP中,您将隐藏行为的详细信息并提供抽象(模块,即一组函数)来访问行为。

答案 1 :(得分:0)

我会把它写成"区别在于面向对象编程主要是关于实时对象之间的关系和通信,而函数式编程主要是针对期望的结果。"

当您使用OOP语言时,给定的域通常对您非常重要。另一方面,对于函数式语言,您不关心域,而只关注应该实现的确定性结果。