Please enable JavaScript.
Coggle requires JavaScript to display documents.
Patrones de Diseño de Software (GoF) para el inicio de un Sistema de…
Patrones de Diseño de Software (GoF) para el inicio de un Sistema de Información
Patrones Creacionales
Próposito General
Abstraen el proceso de creación e instanciación de objetos.
Evitan que el sistema dependa de cómo se crean, combinan y representan los objetos.
Se identifican desde la fase de análisis al detectar recursos compartidos y actores del sistema.
Singleton
Garantiza una única instancia de una
clase y un punto de acceso global.
Ejemplo
Conexión única a la base de datos del sistema
Justificación
Evita múltiples conexiones simultáneas.
Reduce conflictos de concurrencia.
Disminuye el consumo innecesario de recursos.
Ningún otro patrón creacional garantiza la unicidad de un recurso compartido.
Factory Method
Permite crear objetos sin conocer previamente la clase concreta.
Ejemplo
Creación de usuarios
Estudiante
Docente
Administrativo
Justificación
Facilita incorporar nuevos tipos de usuario.
Evita modificar el código existente.
Centraliza la lógica de creación.
Favorece la extensibilidad del sistema.
Abstract Factory
Crea familias de objetos relacionados sin especificar sus clases concretas.
Ejemplo
Crear la interfaz completa de un sistema según el tipo de usuario
Estudiante
Docente
Administrativo
Justificación
Garantiza compatibilidad entre los objetos creados.
Facilita agregar nuevas familias de objetos.
Evita depender de clases concretas.
Builder
Construye objetos complejos paso a paso.
Ejemplo
Generación de un reporte académico en formatos
PDF
Excel
Word
Justificación
Permite reutilizar el mismo proceso de construcción.
Facilita obtener diferentes representaciones.
Reduce la complejidad del código.
Prototype
Crea nuevos objetos copiando otro ya existente.
Ejemplo
Duplicar una configuración de un curso para otro semestre.
Justificación
Reduce el tiempo de creación.
Evita configuraciones repetitivas.
Conserva la información original.
Patrones Estructurales
Propósito General
Organizan clases y objetos en estructuras flexibles.
Simplifican las relaciones entre componentes.
Facilitan la integración y reutilización.
Se aplican durante el diseño de la arquitectura.
Adapter
Permite que dos interfaces incompatibles trabajen juntas.
Ejemplo
Integrar el sistema con la API de pagos de un banco.
Justificación
No modifica ninguno de los sistemas.
Facilita la integración.
Reduce el esfuerzo de mantenimiento.
Bridge
Separa una abstracción de su implementación.
Ejemplo
Mostrar reportes en diferentes dispositivos
Web
Móvil
Escritorio
Justificación
Permite evolucionar ambas partes por separado.
Reduce la dependencia entre implementación e interfaz.
Composite
Trata objetos individuales y grupos de objetos de la misma forma.
Ejemplo
Árbol de carpetas y documentos del sistema.
Justificación
Simplifica el manejo de estructuras jerárquicas.
Facilita operaciones recursivas.
Decorator
Agrega funcionalidades dinámicamente.
Ejemplo
Agregar firma digital o código QR a un certificado.
Justificación
Evita crear muchas subclases.
Permite combinar funcionalidades.
Facade
Proporciona una interfaz sencilla para un subsistema complejo.
Ejemplo
Módulo "Trámites del estudiante".
Justificación
Reduce el acoplamiento.
Simplifica el uso del sistema.
Flyweight
Comparte objetos para ahorrar memoria.
Ejemplo
Iconos repetidos del sistema académico.
Justificación
Reduce el consumo de memoria.
Mejora el rendimiento.
Proxy
Controla el acceso a otro objeto.
Ejemplo
Verificación de permisos antes de acceder a un expediente.
Justificación
Incrementa la seguridad.
Controla el acceso a recursos sensibles.
Patrones de Comportamiento
Propósito General
Definen la comunicación entre objetos.
Distribuyen responsabilidades.
Encapsulan algoritmos y flujos de trabajo.
Se identifican al definir reglas de negocio.
Chain of Responsibility
Permite que varios objetos puedan atender una solicitud.
Ejemplo
Flujo de aprobación
Docente
Director
Rector
Justificación
Reduce el acoplamiento.
Facilita agregar nuevos niveles de aprobación.
Command
Encapsula una acción como un objeto.
Ejemplo
Registrar, modificar o eliminar una matrícula.
Justificación
Permite deshacer operaciones
Facilita auditorías.
Interpreter
Interpreta reglas escritas en un lenguaje específico.
Ejemplo
Verificar automáticamente si un estudiante cumple los requisitos de inscripción.
Justificación
Facilita modificar las reglas sin cambiar la lógica principal del sistema.
Iterator
Recorre colecciones sin mostrar su estructura interna.
Ejemplo
Lista de estudiantes matriculados.
Justificación
Simplifica el recorrido.
Oculta la implementación.
Mediator
Centraliza la comunicación entre objetos.
Ejemplo
Coordinación entre matrícula, pagos y biblioteca.
Justificación
Reduce dependencias.
Facilita modificaciones futuras.
Memento
Guarda y recupera el estado de un objeto.
Ejemplo
Restaurar un formulario después de un error.
Justificación
Evita pérdida de información.
Permite recuperar versiones anteriores.
Observer
Notifica automáticamente cambios de estado a múltiples objetos.
Ejemplo
Cambio de estado de un trámite
Ciudadano
Oficina responsable
Auditoría
Justificaciòn
Permite agregar nuevos interesados sin modificar el objeto principal.
Reduce el acoplamiento.
Facilita la escalabilidad.
State
Cambia el comportamiento según el estado interno.
Ejemplo
Estado de una matrícula
Pendiente
Aprobada
Rechazada
Justificaciòn
Evita numerosos condicionales.
Facilita agregar nuevos estados.
Strategy
Permite cambiar un algoritmo en tiempo de ejecución.
Ejemplo
Cálculo de arancel
Beca
Convenio
Régimen general
Justificación
Cada regla está aislada.
Facilita mantenimiento.
Evita grandes bloques de if/else.
Template Method
Define la estructura general de un algoritmo.
Ejemplo
Proceso de inscripción
Validar requisitos
Registrar datos
Confirmar matrícula
Justificación
Reutiliza el flujo general.
Permite personalizar solo algunos pasos.
Visitor
Agrega nuevas operaciones sin modificar las clases existentes.
Ejemplo
Generar reportes sobre
Cursos
Estudiantes
Docentes
Justificación
Facilita incorporar nuevas funcionalidades.
Mantiene estables las clases del sistema.
Relación entre las tres categorías
Patrones Creacionales
Crean los objetos del sistema.
Patrones Estructurales
Organizan los objetos.
Forman subsistemas.
Integran componentes internos y externos.
Patrones de Comportamiento
Coordinan la interacción.
Gestionan eventos.
Ejecutan reglas de negocio.
Dependencia Lógica
Crear objetos.
Organizar objetos.
Coordinar su comportamiento.
Aplicación en el Inicio de un Sistema de Información
Durante el Análisis
Identificación de actores.
Recursos compartidos.
Objetos principales.
Uso de patrones creacionales.
Durante el Diseño de Arquitectura
Organización de módulos.
Integración con sistemas externos.
Simplificación de subsistemas.
Uso de patrones estructurales.
Durante el Diseño Funcional
Definición de reglas de negocio.
Comunicación entre componentes.
Automatización de eventos.
Uso de patrones de comportamiento.
Beneficios
Reduce el acoplamiento.
Facilita el mantenimiento.
Mejora la reutilización.
Permite la escalabilidad.
Evita rediseños futuros.
Conclusión
Los 23 patrones GoF representan soluciones reutilizables para problemas comunes del diseño orientado a objetos.
Se clasifican en 5 patrones creacionales, 7 estructurales y 11 de comportamiento.
Aplicarlos desde el inicio mejora la mantenibilidad y la flexibilidad del software.
Favorecen la reutilización del código y la reducción del acoplamiento.
Constituyen una base sólida para desarrollar sistemas de información escalables y fáciles de evolucionar.