Explorando los Patrones de Diseño: Arquitectura, Implementación y Comportamiento

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,44 KB

Patrones de Diseño

Los patrones de diseño son soluciones probadas a problemas comunes en el desarrollo de software. Están diseñados para resolver inconvenientes como errores en el código.

Objetivos

  • Reducir esfuerzos y gastos.
  • Tener respaldo de problemas ya resueltos.
  • Homogeneizar la manera de solución.
  • Crear un vocabulario común.
  • Promover la eficiencia.

Tipos de Patrones

1. Arquitectura: El nivel más alto de abstracción, que provee una serie de subsistemas especificando reglas y guías. Es una plantilla para la arquitectura de aplicaciones. Se utilizan durante la etapa de definición de la arquitectura de un sistema, como el patrón MVC (Modelo Vista Controlador).

2. Diseño: Explican cómo resolver un problema concreto de diseño.

3. Implementación: Explican cómo resolver un problema particular de implementación con una tecnología concreta.

4. Antipatrones: Dan soluciones negativas que presentan problemas; permiten reconocer los errores más comunes en la industria del software y evitar malas prácticas.

Elementos Esenciales

  • Nombre: Permite describir un problema de diseño.
  • Problema: Indica cuándo aplicar un patrón.
  • Solución: Describe los elementos que constituyen el diseño.
  • Consecuencias: Son el resultado de aplicar el patrón.

Clasificación de Patrones

Patrones Creacionales

Se enfocan en la creación de instancias de objetos, haciendo independiente al sistema de las creaciones de objetos. Omiten los detalles de cómo los objetos son creados.

  • Builder: Abstrae el proceso de creación de un objeto centralizándolo en un único punto.
  • Abstract Factory: Permite trabajar con objetos de distintas familias.
  • Factory Method: Define una interfaz para crear un objeto, permitiendo a las subclases decidir qué tipo de objeto concreto crear.
  • Prototipo: Crea nuevos objetos clonándolos de una instancia ya existente.
  • Singleton: Asegura la existencia de una única instancia para una clase.

Patrones Estructurales

Se enfocan en la gestión y la forma en que las clases, objetos e interfaces se combinan para dar lugar a nuevas estructuras más complejas.

  • Adapter: Permite a las clases que son incompatibles trabajar juntas, adaptándolas para que cumplan con los requerimientos del cliente. (Interfaz inicial --- Adapter --- Interfaz deseada).
  • Decorator (o Envoltorio): Añade dinámicamente funcionalidad a un objeto, evitando crear sucesivas clases.
  • Módulo: Agrupa varios elementos relacionados como clases y métodos utilizados globalmente en una entidad única. Es útil cuando se requiere programación modular en lenguajes que no lo soportan bien.
  • Flyweight: Reduce la redundancia cuando una gran cantidad de objetos poseen información idéntica.
  • Facade: Provee una interfaz unificada y sencilla que hace de intermediario entre el cliente y una interfaz.
  • Bridge (o Puente): Abstracción que permite modificar ambas partes de una relación.
  • Proxy: Proporciona un intermediario de un objeto para controlar su acceso:
    • Remoto: Representante local de un objeto remoto.
    • Virtual: Crea objetos costosos bajo demanda.
    • Protección: Controla el acceso al objeto original.
    • Proxy de referencia inteligente: Sustituto de un puntero que lleva a cabo operaciones adicionales cuando se accede a un objeto.


Patrones de Comportamiento

Los patrones de comportamiento caracterizan el modo en que las clases y objetos interactúan y se reparten la responsabilidad.

  • Chain of Responsibility: Evita ligar al emisor de una petición y al receptor de la misma, dando a más de un objeto la posibilidad de gestionar la petición.
  • Command: Permite solicitar una operación a un objeto sin conocer realmente el contenido de esta operación, ni el receptor real de la misma.
  • Interpreter: Dado un lenguaje, define una representación de su gramática junto con un intérprete que usa dicha representación para interpretar instrucciones de ese lenguaje.
  • Iterator: Presenta la interfaz que declara los métodos necesarios para acceder, de forma secuencial, a los objetos de una colección.
  • Mediator: Cuando hay un gran número de objetos fuertemente interrelacionados, se hace dificultoso realizar cambios sobre ellos, puesto que cada uno depende en gran medida de los otros.
  • Memento: El propósito de este patrón es guardar el estado de un objeto de forma que éste pueda ser restaurado más tarde.
  • Observer: Define una interacción entre objetos, de manera que cuando uno de ellos cambia su estado, el Observer se encarga de notificar este cambio a los demás.
  • State: Permite que un objeto modifique su comportamiento cuando cambia su estado interno, como si hubiera cambiado la clase del objeto.
  • Strategy: Determina la forma de implementar el intercambio de mensajes entre diferentes objetos que realizan diferentes tareas, pero que comparten elementos comunes.
  • Template Method: Permite que una operación defina únicamente el esqueleto de un algoritmo, postergando algunos pasos concretos a las subclases.
  • Visitor: Representa una operación que será realizada sobre los elementos de una estructura de objetos.

Entradas relacionadas: