mirror of
https://github.com/LingCoder/OnJava8.git
synced 2026-08-24 06:53:27 +08:00
@@ -27,7 +27,7 @@ OO(object oriented,面向对象)是抽象数据,FP(functional programm
|
||||
|
||||
更好的是,“不可变对象和无副作用”范式解决了并发编程中最基本和最棘手的问题之一(当程序的某些部分同时在多个处理器上运行时)。这是可变共享状态的问题,这意味着代码的不同部分(在不同的处理器上运行)可以尝试同时修改同一块内存(谁赢了?没人知道)。如果函数永远不会修改现有值但只生成新值,则不会对内存产生争用,这是纯函数式语言的定义。 因此,经常提出纯函数式语言作为并行编程的解决方案(还有其他可行的解决方案)。
|
||||
|
||||
需要提醒大家的是,函数式语言背后有很多动机,这意味着描述它们可能会有些混淆。它通常取决于各种观点:“为并行编程”,“代码可靠性”和“代码创建和库复用”。[^1] 同时,函数式编程的参数能帮助程序员创建更快更健壮的代码 —— 部分仍然只是假设。虽然已有一些好的范例[^2],但我们还不能证明纯函数式语言就是解决编程问题的最佳方法。
|
||||
需要提醒大家的是,函数式语言背后有很多动机,这意味着描述它们可能会有些混淆。它通常取决于各种观点:为“并行编程”,“代码可靠性”和“代码创建和库复用”。[^1] 关于函数式编程能高效创建更健壮的代码这一观点仍存在部分争议。虽然已有一些好的范例[^2],但还不足以证明纯函数式语言就是解决编程问题的最佳方法。
|
||||
|
||||
FP 思想值得融入非 FP 语言,如 Python。Java 8 也从中吸收并支持了 FP。我们将在此章探讨。
|
||||
|
||||
@@ -106,7 +106,7 @@ Hello there Hello there
|
||||
|
||||
传统上,我们通过创建一个实现 **Strategy** 接口的类来实现此行为,比如在 **Soft**。
|
||||
|
||||
- **[1]** 在 **Strategize** 中,**Soft** 作为默认策略,在初始化构造函数中赋值的。
|
||||
- **[1]** 在 **Strategize** 中,**Soft** 作为默认策略,在构造函数中赋值。
|
||||
|
||||
- **[2]** 一种略显简短且更自发的方法是创建一个**匿名内部类**。即使这样,仍有相当数量的冗余代码。你总是要仔细观察:“哦,原来这样,这里使用了匿名内部类。”
|
||||
|
||||
|
||||
Reference in New Issue
Block a user