28
函数式编程会取代GoF设计模式吗?
自从我去年开始学习F#和OCaml以来,我已经阅读了大量文章,这些文章坚持认为设计模式(尤其是Java语言)是命令式语言中缺少功能的变通方法。我发现一篇文章提出了相当有力的主张: 我遇到的大多数人都阅读 过《四人帮》(GoF)的《设计模式》一书。任何自以为是的程序员都会告诉您,该书与语言无关,并且无论您使用哪种语言,该模式通常适用于软件工程。这是一个崇高的主张。不幸的是,它与事实相去甚远。 函数式语言极富表现力。在一种功能性语言中,因为该语言可能非常高级,所以不需要设计模式,因此您最终只能使用可以消除所有设计模式的概念进行编程。 函数式编程(FP)的主要功能包括一流的功能,柯里化的,不变的值等。在我看来,OO设计模式无法近似所有这些功能。 此外,在支持OOP的功能语言(例如F#和OCaml)中,对我来说显而易见的是,使用这些语言的程序员将使用与其他OOP语言相同的设计模式。实际上,现在我每天都使用F#和OCaml,并且在这些语言中使用的模式与在用Java编写时使用的模式之间没有显着差异。 函数式编程消除了对OOP设计模式的需求,这有何道理?如果是这样,您是否可以发布或链接到典型的OOP设计模式及其等效功能的示例?