Mientras estudiaba el código fuente de Neo4J noté que usan un patrón muy interesante para desacoplar la interfaz de la implementación. Hay una interfaz Node implementada solo por la clase NodeProxy. NodeProxy a su vez delega en NodeImpl, lo que podría pensar que implementa Node también, pero no es así. NodeImpl tiene los mismos métodos con la misma firma y es la implementación de respaldo de Node, pero no implementa Node. He utilizado el patrón de proxy antes, pero habría hecho NodeImpl para implementar Node como lo hace NodeProxy. ¿Alguna idea sobre las ventajas que brinda este patrón?Patrón de API interesante
Edit 1: Gracias al comentario de Cirkel ahora sé que se llama Bridge pattern y el objetivo principal es "desacoplar una abstracción de su implementación para que los dos puedan variar de forma independiente", interesante.
¿Cómo delega 'NodeProxy' a' NodeImpl'? 'NodeProxy' no usa' NodeImpl' de ninguna manera. Es al revés: 'NodeImpl' usa' NodeProxy'. –
No estoy seguro de cuáles son los beneficios porque no sé absolutamente nada sobre el marco que está mirando, pero suena como que NodeProxy actúa como un localizador de servicios. –
Se llama _Bridge pattern_ –