1. Patrón de proxy y puente en Core Workspace
Los patrones de diseño más importantes utilizados en Core Workspace se denominan «Proxy y Bridge». La pregunta más confusa es sobre qué parte es proxy o qué parte es puente.
El siguiente diagrama utiliza IResource para la demostración, otros son similares como IFile, IFolder, IProject, IWorkspaceRoot, etc.
En un espacio de trabajo, cada recurso está representado por un identificador. El identificador actúa como una llave para un recurso. Los mangos son objetos pequeños y siempre cambiarán una vez creados.
Resource es el proxy de ResourceInfo. Todo lo solicitado a ResourceInfo se maneja a través de su proxy Resource.
Resource es el implementador de IResource. Dado que solo hay un implementador para un identificador, esto se denomina Puente simplificado.
Proxy: si todo lo que hace A siempre se hace a través de B, entonces B es el proxy de A. Esto puede no ser preciso, pero explica cómo debemos entender el diagrama de clases.
El puente es un patrón similar al adaptador. En el patrón Bridge, definimos tanto la interfaz abstracta como la implementación subyacente. No queremos que se adapte a ninguna interfaz. Normalmente, hay varias implementaciones en lugar de una en este ejemplo.
No es importante mapear los patrones de diseño que conoce con el patrón utilizado aquí, porque no son obvios. Comprender cómo funciona es más útil.
2. Ejemplo de código
Aquí hay un ejemplo de código que puede ilustrar cómo funciona este patrón.
IResource resource=ResourcesPlugin.getWorkspace().getRoot().findMember(path); if (resource == null) { return null; } IJavaElement javaElement=JavaCore.create(resource); if (javaElement == null) { return null; } return javaElement; |
Vale la pena mencionar que el modelo Java en JDT usa el mismo diseño.