首页 文章

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

提问于
浏览
46

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

2 回答

  • 3

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

    Template Method - 模板方法将越来越少地被使用,相反,我们将看到对象将函数传递给AbstractTemplate而不是继承AbstractTemplate . 我在这里写了一篇关于这个问题的博客:http://hamletdarcy.blogspot.ch/2007/11/groovy-closures-end-of-template-method.html

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

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

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

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

  • 24

    我试着回答这个问题,自己编写了一系列文章,分析了一些GoF模式以及它们与实际代码示例的功能对应 . 特别是我再次访问:Command and StrategyTemplate and ObserverDecorator and Chain of ResponsibilityInterpreter and Visitor .

相关问题