Patrones de diseño – Lista de los más usados y cuándo utilizarlos
Se pueden definir los patrones de diseño como soluciones técnicas probadas a problemas recurrentes de la programación.
¿Cuáles son los más famosos y cuáles son estos problemas recurrentes? En este articulo propongo una lista de los patrones de diseño más famosos asociados con el problema que solucionan para poderlos encontrarlos de manera rápida.
PROS Y CONTRAS DEL UTILIZO DE PATRONES DE DISEÑO
Antes de todo se tiene que evidenciar que utilizar patrones de diseño tiene lados positivos y negativos.
Aquí un resumen:
PROS:
- soluciones probadas
- arquitectura más sencilla de decodificar (ingeniería inversa)
CONTRAS:
- no siempre representan la solución más optimizada
- entender cuándo es posible utilizarlos necesita gente con un mínimo de experiencia
LOS PATRONES DE DISEÑO MÁS CONOCIDOS Y QUÉ PROBLEMA SOLUCIONAN
Adapter
Adaptar un nuevo objeto a un sistema de clases que ya existen.
Builder
Delegar la construcción de un objecto a otra clase. Se utiliza sobretodo para objecto complejos la cuya construcción depende de diferentes factores.
Decorator
Añadir o modificar funcionalidades de un objecto sin modificar su estructura interna.
Delegate
Modificar un objecto extrayendo una parte de código complejo pero independiente para crear una nueva clase. Se aconseja utilizarlo en caso de if o swtich complejos.
Façade
Se utiliza para crear una nueva tapa (clase) para ocultar la complejidad de un objecto.
Factory
Crear una "interfaz" que cree una instancia de un objecto sin especificar a priori la clase.
Interpreter
Analiza los elementos claves de una entidad y devuelve una interpretación (por ejemplo para crear un sistema de plantillas)..
Iterator
Ayuda a construir objectos cuyos elementos se puedas manipular de manera similar a un array.
Mediator
Se utiliza cuando tenemos que modificar muchos objectos similares. La clase mediator se ocupa de modificarlas todas de una vez.
Observer
Se utiliza para crear objectos que observan otros para proporcionar noticias sobre el estado de éstos.
Prototype
Crea un objecto que clona otro para ahorrar recursos (por ejemplo para objectos con constructores muy pesado y en parte inútil).
Proxy
Crea un objecto que se interpone de manera transparente entre otros dos para controlar el acceso o sobrescribir funcionalidades.
Singleton
Se utiliza para crear una única instancia de un objecto (por ejemplo el acceso a una BBDD).
Strategy
Aísla un algoritmo de un objecto que sepamos pueda variar de manera dinámica y creamos diferentes clases.
Template
Simplemente para crear una clase abstracta que proporciona métodos que utilizaremos en las clases que la heredan.
Visitor
Para minimizar las modificaciones de una clase (principio open/close) se crea otra que se tiene que llamar cada vez que se instancia la primera. Es como si "extendíamos" la clase virtualmente.
CONCLUSIONES
Los patrones de diseño son muy potentes y útiles. Cada buen programador tendría que conocerlos y utilizarlos. Espero que esta mini-guía os ayude a a reconocer cuando es posible utilizarlos para cumplir el principio del "no reinventes la rueda".
¿Te gustó este artículo?
Aún no hay trackbacks.