在Java8中引入lambdas会改变或影响哪种GoF设计模式?

Mar*_*sco 47 java lambda design-patterns functional-programming java-8

许多人声称,GoF设计模式的最大部分只是缺少一流功能的解决方法.既然Java即将获得lambda表达式,那些模式中的哪些将受到它们的影响?哪些可以大大简化或推广?那些基本上会保持不变?欢迎任何实际的例子.

Jen*_* S. 24

我认为你会看到行为模式的最大变化.

模板方法 - 模板方法将越来越少使用,相反,我们将看到对象将函数传递给AbstractTemplate而不是继承AbstractTemplate.我在这里写了很久以前的博客:http://hamletdarcy.blogspot.ch/2007/11/groovy-closures-end-of-template-method.html

观察者模式 - 观察者变得简化,因为您不再需要保留一个观察者列表来更新新事件,而是保留一个需要在新事件上回调的函数列表.所以没有更多的Observer接口和函数对象.

状态/战略模式 - 我将这些组合在一起是因为它们在结构上是等同的,只是意图不同.策略使用变得更加普遍,因为它更容易实现.您不需要父策略和策略子类,只需要函数.因此,将函数作为参数传递很简单,实际上是使用策略模式.

总的来说,我认为任何需要单方法接口的模式都变得更容易实现.这将产生两种效果.1)我们将更多地使用这些功能模式,2)我们将停止将它们称为模式,但就像"传递函数"一样.

你做你想做的事,但我认为"JavaScript the Good Parts"给出了一个很好的介绍来利用语言中的函数.你可以拿起来看看吧!


Mar*_*sco 5

我尝试自己写了一系列文章来回答这个问题,其中我用实际代码示例分析了一些 GoF 模式及其对应的功能。我特别回顾了:命令和策略模板和观察者装饰者和责任链解释器和访问者