Introducción - fapaccha/Dise-o-dirigido-por-el-modelo GitHub Wiki
Patrón de Diseño
Los patrones de diseño son unas técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.
Tipos de patrones
Según la finalidad del patrón, estos se clasifican en tres tipos:
- Patrones Creacionales
- Patrones Estructurales
- Patrones de comportamiento.
Patrones Creacionales
Como su nombre indica, estos patrones vienen a solucionar o facilitar las tareas de creación o instanciación de objetos. Estos patrones hacen hincapié en la encapsulación de la lógica de la instanciación, ocultando los detalles concretos de cada objeto y permitiéndonos trabajar con abstracciones. Algunos de los patrones creacionales más conocidos son:
- Factory: Desacoplar la lógica de creación de la lógica de negocio, evitando al cliente conocer detalles de la instanciación de los objetos de los que depende.
- Abstract Factory: Nos provee una interfaz que delega la creación de una serie de objetos relacionados sin necesidad de especificar cuáles son las implementaciones concretas.
- Factory Method: Expone un método de creación, delegando en las subclases la implementación de este método.
- Builder: Separa la creación de un objeto complejo de su estructura, de tal forma que el mismo proceso de construcción nos puede servir para crear representaciones diferentes.
Patrones estructurales
Los patrones estructurales nos ayudan a definir la forma en la que los objetos se componen. Los patrones estructurales más habituales son:
- Adapter: Nos ayuda a definir una clase intermedia que sirve para que dos clases con diferentes interfaces puedan comunicarse. Esta clase actúa como mediador, haciendo que la clase A pueda ejecutar métodos de la clase B sin conocer detalles de su implementación. También se conoce como Wrapper.
- Decorator: Permite añadir funcionalidad extra a un objeto (decora el objeto) sin modificar el comportamiento del resto de instancias.
- Facade: Una fachada es un objeto que crea una interfaz simplificada para tratar con otra parte del código más compleja.
Patrones de comportamiento
Los patrones comportamentales nos ayudan a definir la forma en la que los objetos interactúan entre ellos. Algunos de los más conocidos (por citar unos pocos) son:
- Command: Son objetos que encapsulan una acción y los parámetros que necesitan para ejecutarse.
- Observer: Los objetos son capaces de suscribirse a una serie de eventos que otro objeto va a emitir, y serán avisados cuando esto ocurra.
- Strategy: Permite la selección del algoritmo que ejecuta cierta acción en tiempo de ejecución.
- Template Method: Especifica el esqueleto de un algoritmo, permitiendo a las subclases definir cómo implementan el comportamiento real.