Patrones de Diseño
Un patrón de diseño es una solución general y reutilizable para un problema común en el diseño de software. No es un código específico que puedas copiar y pegar, sino una plantilla o guía que describe cómo resolver un problema de diseño de software de manera eficiente y mantenible. Los patrones de diseño son el resultado de la experiencia colectiva de desarrolladores que han enfrentado y resuelto problemas similares a lo largo del tiempo.
Características de los patrones de diseño:
- - Reutilizable: Pueden aplicarse en diferentes contextos y proyectos
- - Probado: Han sido validados y refinados a través de su uso en múltiples situaciones.
- - Abstracción: No son soluciones concretas, sino descripciones de cómo resolver un problema.
- - Lenguaje común: Proporcionan un vocabulario compartido entre desarrolladores para discutir soluciones de diseño.
Los patrones de diseño se clasifican en tres categorías principales:
- - Creacionales: Se centran en cómo se crean los objetos. Ayudan a hacer que el sistema sea independiente de cómo se crean, componen y representan los objetos.
- - Estructurales: Se centran en cómo se componen las clases y objetos para formar estructuras más grandes.
- - De comportamiento: Se centran en la interacción y distribución de responsabilidades entre objetos.
Libro Patrones De Diseño- Elementos de software orientado a objetos Reutilizable. (En Español - link)
Link al PDFDe Comportamiento
Strategy (cambiar el comportamiento en tiempo de ejecucion)
Pág.355 del PDF
Define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables. Permite que un algoritmo varie independientemente de los clientes que lo usan.
Template Mehtod (la plantilla o los pasos de un algoritmo)
Pág.365 del PDF
Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura
Command (cuándo y cómo se satisface una petición)
Pág.269 del PDF
Encapsula una petición en un objeto, permitiendo así parametrizar a los clientes con diferentes peticiones, hacer cola o llevar un registro de las peticiones, y poder deshacer las operaciones.
Observer (objetos que dependen de otro; cómo se mantiene actualizado el objeto dependiente)
Pág.333 del PDF
Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y se actualicen automáticamente todos los objetos que dependen de él.
Estructurales
Composite
Pág.195 del PDF
Compone objetos en estructuras de árbol para representar jerarquías de parte-todo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los compuestos.
Decorator
Pág.207 del PDF
Suma nuevas funcionalidades a un objeto sin tener que modificar su código. Envuelve al objeto original con otros objetos que le agregan comportamientos extra, de forma flexible y dinámica.