streams procesamiento parte funciones expresiones explicacion ejemplos datos con anonimas java design-patterns lambda functional-programming java-8

procesamiento - ¿Qué patrón de GoF Design cambiará o se verá influido por la introducción de lambdas en Java8?



java funciones lambda ejemplos (2)

Creo que verás la mayoría de los cambios en los patrones de comportamiento.

Método de plantilla: los métodos de plantilla se usarán cada vez más y, en su lugar, veremos que los objetos pasan funciones a AbstractTemplate en lugar de crear subclases de AbstractTemplate. Hace un blog sobre esto hace mucho tiempo aquí: http://hamletdarcy.blogspot.ch/2007/11/groovy-closures-end-of-template-method.html

Patrón de observador : Observer se simplifica porque ya no necesita mantener una lista de observadores que se actualizan en los nuevos eventos, sino que mantiene una lista de las funciones que necesitan volverse a llamar en los nuevos eventos. Entonces no hay más interfaz Observer y solo objetos funcionales.

Patrón de Estado / Estrategia: los agrupo juntos porque son estructuralmente equivalentes, simplemente diferentes en su intención. El uso de la estrategia se vuelve mucho más común porque es más fácil de implementar. No necesita una estrategia para padres y subclases de estrategia, solo necesita funciones. Por lo tanto, es simple pasar una función como parámetro, que en efecto está utilizando el patrón de estrategia.

En general, creo que cualquier patrón que requiera una interfaz de un solo método se vuelve más fácil de implementar. Esto tendrá los dos efectos. 1) Utilizaremos más estos patrones funcionales, y 2) dejaremos de referirnos a ellos como patrones, pero solo como "pasar una función".

Hace lo que quiere, pero creo que "JavaScript the Good Parts" ofrece una introducción bastante agradable para aprovechar las funciones en un idioma. ¡Puede recogerlo y leerlo!

Muchos afirman que la mayor parte de los patrones de diseño de GoF son solo soluciones para la ausencia de funciones de primera clase. Ahora que Java está a punto de obtener expresiones lambda, ¿cuál de esos patrones será influenciado por ellos? ¿Cuáles pueden ser dramáticamente simplificados o generalizados? ¿Y cuáles básicamente serán los mismos? Cualquier ejemplo práctico es bienvenido.