48

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

4

2 回答 2

24

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

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

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

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

总的来说,我认为任何需要单一方法接口的模式都变得更容易实现。这将产生两种效果。1)我们将更多地使用这些功能模式,并且 2)我们将不再将它们称为模式,而只是将它们称为“传递函数”。

你做你想做的事,但我认为“JavaScript the Good Parts”很好地介绍了利用语言中的函数。你可以拿起它来阅读它!

于 2013-06-10T12:03:14.037 回答
4

我尝试自己写了一系列文章来回答这个问题,其中我分析了一些 GoF 模式及其与实际代码示例的功能对应物。我特别重温了:Command and StrategyTemplate and ObserverDecorator and Chain of ResponsibilityInterpreter and Visitor

于 2016-06-12T16:49:32.620 回答