在Java8中引入lambdas会改变或影响哪个GoFdevise模式?
许多人声称,GoFdevise模式的最大部分只是缺乏头等function的解决方法。 现在Java即将获得lambdaexpression式,那么这些模式中的哪些将受到它们的影响? 哪些可以大大简化或泛化? 哪些基本上保持不变? 任何实际的例子是受欢迎的
我想你会看到行为模式中的最大变化。
模板方法 – 模板方法将越来越less使用,相反,我们将看到对象将函数传递给AbstractTemplate,而不是inheritanceAbstractTemplate。 我在这个博客上写了一篇这样的文章: http ://hamletdarcy.blogspot.ch/2007/11/groovy-closures-end-of-template-method.html
观察者模式 – 观察者变得简化了,因为您不再需要保留在新事件上得到更新的观察者列表,而是保留需要在新事件上callback的function列表。 所以没有更多的Observer接口和只是函数对象。
国家/战略模式 – 我将这些组合在一起,因为它们在结构上是等同的,意图不同。 战略使用变得更加普遍,因为它更容易实施。 你不需要一个父策略和策略子类,你只需要function。 所以仅仅传递一个函数作为一个参数很简单,实际上是使用策略模式。
总的来说,我认为任何需要单一方法界面的模式都会变得更容易实现。 这会有两个效果。 1)我们将更多地使用这些function模式,2)我们将停止将它们作为模式来引用,而是像“传递函数”一样。
你做你想做的,但我认为“JavaScript的好部分”提供了一个相当不错的介绍,以利用语言的function。 你可能会把它拿起来阅读!
我试图回答这个问题,自己写了一系列的文章,我分析了一些GoF模式及其function对应的实际代码示例。 我特别重温: 指挥与策略 , 模板与观察者 , 装饰者与责任链 , 口译员与访问者 。