许多人声称,GoF设计模式的最大部分只是缺少一流功能的解决方法 . 既然Java即将获得lambda表达式,那些模式中的哪些将受到它们的影响?哪些可以大大简化或推广?那些基本上会保持不变?欢迎任何实际的例子 .
我认为你会看到行为模式的最大变化 .
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”给出了一个很好的介绍来利用语言中的函数 . 你可以拿起来看看吧!
我试着回答这个问题,自己编写了一系列文章,分析了一些GoF模式以及它们与实际代码示例的功能对应 . 特别是我再次访问:Command and Strategy,Template and Observer,Decorator and Chain of Responsibility,Interpreter and Visitor .
2 回答
我认为你会看到行为模式的最大变化 .
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”给出了一个很好的介绍来利用语言中的函数 . 你可以拿起来看看吧!
我试着回答这个问题,自己编写了一系列文章,分析了一些GoF模式以及它们与实际代码示例的功能对应 . 特别是我再次访问:Command and Strategy,Template and Observer,Decorator and Chain of Responsibility,Interpreter and Visitor .