走进函数式编程 (Becomming Functional) (不可变性)

不可变性(Immutable--不是不让谁变性) 在设计模式中似乎不那么显眼,但是它在函数式编程却起着举足轻重的意义了。我们都知道 Java 的 String 是设计为 Immutable 的,对 String 改变都会产生新的 String 实例,这有助于共享常量池中字符串与并发。

这里再回顾上一篇关于纯虚函数(输入决定输出,无副作用函数,非 C++ 中可重载无 Body 的函数),由此可知,Immutable 也有助于实现纯虚函数,因为一个不可变实例被传入到某个函数中,该实例的内部状态是无法被修改的,也就是说该函数是无副作用的。

先来感受一下可变类型在并发环境下的一个弊端,看个例子,可变的 Customer 类有三个属性 name, email 和  age, 它还有一个更新方法 updateNameAndEmail() 阅读全文 >>