Categorías
Architecture & Design Design Patterns Stories

Patrones de diseño de Eclipse: proxy y puente en el espacio de trabajo

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.

IResource - Proxy y Bridge

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;
  Patrón de diseño de Java: visitante

Vale la pena mencionar que el modelo Java en JDT usa el mismo diseño.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *