Please enable JavaScript.
Coggle requires JavaScript to display documents.
Patrones de Diseño, Patrones de Comportamiento, Patrones
Emergentes -…
Patrones de Diseño
Patrones Creacionales
Factory Method
Propósito
Define una interfaz para crear objetos, pero permite que las subclases decidan qué clase instanciar.
Caso de Uso
Frameworks de logging donde la clase que registra (LogFactory) decide si crea un FileLogger o un ConsoleLogger.
Ventajas
- Reduce acoplamiento entre creador y producto.
- Permite añadir nuevos productos fácilmente.
Cuándo usarlo
Cuando una clase no sabe qué subclases de objetos debe crear, o se quiere que las subclases especifiquen los objetos a crear.
Características
- Desacopla la creación del objeto del código que lo usa.
- Permite extender tipos sin modificar código existente.
- Centraliza la lógica de creación en un único punto.
-
Abstract Factory
Propósito
Proporciona una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas
Características
- Crea productos compatibles entre sí.
- Evita dependencias con clases concretas.
- Permite cambiar familias completas de productos fácilmente.
Caso de Uso
Crear componentes de interfaz de usuario para diferentes Sistemas Operativos (Windows Button, Mac Button, etc.).
Ventajas
- Aísla al código de las clases concretas.
- Garantiza la consistencia entre los productos.
Cuándo usarlo
Cuando se necesita crear familias de objetos relacionados, y el cliente no debe depender de las clases concretas.
-
Builder
Propósito
Separa la construcción de un objeto complejo de su representación, permitiendo que el mismo proceso de construcción cree diferentes representaciones.
Características
- Separa construcción de representación.
- Permite diferentes configuraciones del mismo objeto.
- Facilita la creación de objetos inmutables.
Caso de Uso
Construir un documento complejo (HTML o Markdown) donde la secuencia de encabezados, párrafos y listas varía.
Ventajas
- Permite construir objetos paso a paso.
- Controla la representación interna del producto.
Cuándo Usarlo
Cuando la creación de un objeto requiere muchos pasos y se quiere crear distintas variaciones del mismo objeto.
-
-
-
Patrones Estructurales
Adapter
Propósito
Convierte la interfaz de una clase en otra interfaz que el cliente espera. Permite que clases con interfaces incompatibles trabajen juntas.
Características
- Convierte una interfaz en otra.
- Envuelve objetos existentes sin modificarlos.
- Facilita la integración con sistemas antiguos (legacy).
Caso de Uso
Integración de una API de terceros para pagos que usa un formato de datos diferente al esperado por tu sistema.
Ventajas
- Permite la reutilización de código legacy.
- Desacopla la interfaz del cliente de la interfaz adaptada.
Cuándo Usarlo
Cuando se quiere usar una clase existente, pero su interfaz no coincide con la se necesita.
-
Decorator
Propósito
Añade dinámicamente responsabilidades adicionales a un objeto. Proporciona una alternativa flexible a la herencia para extender la funcionalidad.
Características
- Envuelve objetos para extender funcionalidad.
- Alternativa flexible a herencia.
- Permite combinar múltiples decoradores en cadena.
Caso de Uso
Añadir funcionalidad de cifrado, compresión o registro a un componente de streaming de datos.
Vantajas
- Mayor flexibilidad que la herencia.
- Permite agregar o eliminar responsabilidades en tiempo de ejecución.
-
-
-
-
Proxy
Propósito
Proporciona un sustituto o marcador de posición (placeholder) para otro objeto para controlar el acceso a él.
Características
- Controla creación, acceso o ejecución.
- Puede añadir seguridad, caching o lazy loading.
-
- Oculta detalles del objeto real al cliente.
-
Ventajas
- Control de acceso al objeto real.
- Añade funcionalidad adicional sin modificar el objeto real.
-
-
Bridge
Propósito
Desacopla una abstracción de su implementación, de modo que ambas puedan variar independientemente.
Características
- Estructura con dos jerarquías independientes.
- Soporta combinaciones flexibles entre abstracción e implementación.
-
Caso de Uso
Controlar diferentes dispositivos (TV, Radio) con un control remoto. La lógica del control remoto (abstracción) es independiente del dispositivo concreto (implementación).
Ventajas
- Evita explosión de clases por herencia.
- Mejora la extensibilidad al poder extender abstracción e implementación por separado.
Cuándo Usarlo
Cuando se quiere compartir una implementación entre múltiples objetos, o se tiene que extender la abstracción y la implementación por separado.
-
Composite
Propósito
Compone objetos en estructuras de árbol para representar jerarquías de parte-todo. Permite que los clientes traten a los objetos individuales y a las composiciones de objetos de manera uniforme.
-
Caso de Uso
Sistema de archivos, donde una carpeta (compuesto) y un archivo (hoja) pueden ser tratados de la misma manera.
Ventajas
- Simplifica el código cliente.
- Facilita la adición de nuevos tipos de componentes.
Cuándo Usarlo
Cuando se quiere representar jerarquías de objetos, y los clientes deben ignorar si están tratando con un objeto simple o un grupo.
-
-
Patrones
Emergentes
-
-
DAO
(Data Access Object)
Propósito
Abstrae y aísla la capa de persistencia de datos (como una base de datos) del resto de la aplicación.
Características
- Encapsula consultas y operaciones con DB.
-
- Permite cambiar la base de datos sin afectar la lógica.
Caso de Uso
Un sistema que necesita acceder a datos de diferentes fuentes (SQL, NoSQL, Archivos) sin que la lógica de negocio se entere.
Ventajas
- Aisla la lógica de persistencia.
- Permite cambiar la fuente de datos fácilmente.
Cuándo Usarlo
Cuando la forma en que los datos persisten puede cambiar, o se quiere abstraer la tecnología de la base de datos.
-
-
-
-
-