自从我去年开始学习F#和OCaml以来,我已经阅读了大量的文章,这些文章坚持认为设计模式(尤其是在Java中)是解决命令式语言中缺失的特性的变通方法。
我见过的大多数人都读过设计模式书的帮派四(GoF)任何有自尊的程序员会告诉你这本书是语言不可知论者和模式应用于软件工程中一般,无论哪种语言你使用。这是一个高尚的主张。不幸的是,它远离真相
函数式语言非常在函数式语言中表达性强不需要设计模式因为语言可能是如此之高级别,你最终会在消除设计的概念所有的模式都在一起。
函数式编程(FP)的主要特性包括作为一等值、柯里化、不可变值等的函数,在我看来,OO设计模式是否接近这些特性并不明显。
此外,在支持OOP的函数式语言(例如F#和OCaml)中,对我来说很明显,使用这些语言的程序员会使用其他OOP语言可用的相同设计模式。事实上,现在我每天都使用F#和OCaml,我在这些语言中使用的模式与我在Java中使用的模式之间没有显着差异。
函数式编程消除了对OOP设计模式的需求这一说法是否属实?如果是这样,您是否可以发布或链接到典型的OOP设计模式及其功能等价物的示例?