Indirección y Variaciones Protegidas Mario Germán López Código 0243236 Jeisón Andres Meléndez Código 0237864 Diana Patricia Tascón Código 0239678 Juan Diego Tascón Código 0233680 María Alejandra Trujillo Código 0225428
Variaciones Protegidas Principio fundamental que motiva la mayoría de los mecanismos y patrones en la programación y el diseño, destinados a proporcionar flexibilidad y protección frente a las variaciones.
Variaciones Protegidas Problema ¿Cómo diseñar sistemas de manera que las variaciones en estos elementos no tenga impacto no deseable en los otros elementos? Solución Se deben identificar los puntos de variación prevista y crear interfaces estables alrededor de ellos.
Ejemplo En una aplicación de un punto de venta, se asume que la instancia POST tiene un atributo referenciando a Sale, el cual a su vez tiene un atributo referenciando a Payment.
No aplica el modelo “no hablar con extraños”.
Aplica el modelo “no hablar con extraños”.
Mecanismos Básicos Diseño dirigido por los datos Búsqueda de servicios Diseño dirigido por un intérprete Diseño reflexivo o de meta-nivel Principio de sustitución de Liskov (PSL) Diseño de ocultación de la estructura (no hable con extraños).
Ventajas Se añaden fácilmente las extensiones que se necesitan para nuevas variaciones; Se pueden introducir nuevas implementaciones sin afectar a los clientes; Se reduce el acoplamiento; Puede disminuirse el impacto o coste de los cambios.
PATRONES GRASP INDIRECCION
El Problema La Solución Ejemplos Esquema El Problema La Solución Ejemplos
El Problema Tener 2 o más clases (modulos) totalmente independientes con diferentes objetivos y funcionalidades. Se necesita cierta comunicación entre las clases. Se quiere disminuir las responsabilidades de las clases. Se quiere aumentar la reutilización de código.
La Solución Crear una clase que reciba la responsabilidad de comunicar las clases independientes.
Ejemplo: Problema En una aplicación se tiene dos módulos, uno se encarga de calcular cuanto se debe pagar por un servicio, y el otro es quien ingresa la información en la base de datos.
Ejemplo: Solución Lo que se pretende con el patrón de indirección es crear un módulo que cree la comunicación entre ellos.
Diagrama sin indirección
Diagrama con indirección