Patrones de Diseño Estructurales y Creacionales: Composite, Singleton y Adapter

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,56 KB

Patrón de Diseño Composite

Problema

¿Cómo tratar objetos que pueden ser compuestos de otros objetos como si fueran objetos individuales?

Aplicabilidad

Se utiliza para representar jerarquías de objetos compuestos de otros objetos, así como de objetos individuales. Los clientes ignoran las diferencias entre objetos individuales y objetos compuestos dentro de esa jerarquía y los manipulan indistintamente.

Participantes

  • Componente: Abstrae los diferentes elementos de la jerarquía. Declara una interfaz común para ellos. Implementa comportamiento por defecto para todos ellos (si corresponde).
  • Hoja (Leaf): Representa los elementos atómicos (sin hijos). Define el comportamiento para los elementos primitivos de la composición.
  • Compuesto (Composite): Define el comportamiento para los componentes con hijos. Almacena a sus hijos. Permite el manejo de los hijos (agregar, eliminar, etc.).
  • Cliente: Manipula objetos de la composición a través de los servicios brindados por el Componente.

Consecuencias

Fácil introducción de nuevos tipos de componentes sin modificar el código cliente existente. Los clientes son sencillos: se evita la lógica condicional en ellos y manipulan de igual forma los componentes.


Patrón de Diseño Singleton

Problema

¿Cómo asegurar que una clase tenga una sola instancia accesible globalmente?

Aplicabilidad

Utilice Singleton cuando una clase deba tener una única instancia globalmente accesible para cualquier cliente.

Participantes

El patrón Singleton posee una única clase participante: la propia clase Singleton, que se encarga de crear la instancia únicamente cuando esta no haya sido previamente creada.

Consecuencias

  • Permite el acceso controlado a una instancia.
  • Fácilmente modificable para permitir un conjunto de instancias y no solo una.
  • Frente al uso de métodos de clase, el patrón Singleton solo crea la instancia cuando esta es utilizada por clientes, no desperdiciando recursos si no son necesarios, y permite el fácil manejo de varias instancias (punto anterior).


Patrón de Diseño Adapter

Problema

¿Cómo hacer interactuar una clase ya creada con otra cuya interfaz (servicios) cambió?

Aplicabilidad

Se utiliza para transformar una interfaz en otra, de tal modo que una clase que no pueda utilizar la primera haga uso de ella a través de la segunda.

Participantes

  • Destino (Target): Define la interfaz (servicios) que el cliente necesita. También se le llama Target.
  • Cliente: Utiliza objetos que se conformen con la interfaz Destino.
  • Clase Destino (Adaptee): Define una interfaz (servicios) existente que necesita ser adaptada para poder ser utilizada por los clientes.
  • Adapter: Adapta la interfaz de la Clase Destino a la interfaz Destino para poder ser utilizada por los clientes.

Consecuencias

Un adaptador puede cambiar su clase de destino dinámicamente (en tiempo de ejecución). Puede desde simplemente adaptar el nombre de una operación hasta adaptar toda una interfaz completa, incluyendo los parámetros. Generalmente, el objeto adaptado ya no puede ser utilizado mediante su vieja interfaz (a menos que el adaptador también lo permita).

Entradas relacionadas: