03 03 2020 - MatRJ08/Portafolio_DatosII GitHub Wiki
Temas
Relizacion
Modelo dinamico
Digrama de componentes
Diagrama deployement
Patrondes de diseño
Digrama de componentes
- Relacion entre modulos *Modulo (Paquete de clases)
Diagrama deployement
- Requeriminetos para poder hacer deploy
- Ya sea update o lanzamiento
Diagrama de secuencia
Formaliza el comportamiento dinámico de un sistema y visualizar la comunicación de objetos
Patrones de diseño
Regularidad discernible
Resolución general en un contexto especifico y relacionado a software
- Es solo una guía, se debe adaptar a la solución del problema
Cada patrón posee 4 cosas
- Nombre
- Problema
- Solución
- Consecuencia
- Ventajas
- Desventajas
Pueden ser clasificados por dos criterios
- Propósito: que hace cada uno.
- Creacional: Abstrae el proceso de instanciacion
- Encapsulan el conocimiento acerca de que clases concretas usa el sistema
- Esconde el proceso de instanciacion
- Estructural: composición de clases u objetos para crear estructuras mas grandes. O para poder agregar nuevas funcionalidades
- Comportamiento: están relacionados en la forma en la que se le asigna responsabilidades a las clases y objetos
- Creacional: Abstrae el proceso de instanciacion
- Alcance: Clases o Objetos
Builder
Separa la construcción de un objeto complejo en diferentes procesos de construcción
Aplica cuando se debe crear un objeto complejo y la creación de sus partes deben ser independientes
Consecuencias:
- Oculta la ensamblación del objeto
- Oculta la estructura interna del objeto
- El cliente solo manda a crear
- Los directores pueden reutilizar diferentes builder
- El director retorna hasta que el producto este terminado
Facade
Provee una interfaz unificada a un conjunto de interfaces internas.
Permite que la interacción con el usuario sea más sencilla
- El cliente usa el Facade y el facade entra a los objetos del subsistema
- Desacopla al cliente de los sistemas
Consecuencias:
- Hace que los subsistemas sean mas fáciles de usar, al ocultárselos al cliente
- Tiene un bajo acoplamiento entre el cliente y los subsistemas
- Puede ser complicado cortar la coneccion entre el cliente y los subsistemas
Adapter
Hace dos identidades compatibles
- Aplica cuando dos clases son incompatibles
- Se puede utilizar para reutilizar una clase existente y no tener que editarla
Consecuencias:
- En clases
- No sirve para adaptar una clase y todas sus subclases
- Deja sobrescribir el comportamiento del adaptado
- En objetos
- Puede agregar funcionalidad a todos los adaptados e incluso a sus subclases
- Difícil de sobrescribir el comportamiento de los adaptados
Observer
Define una dependencia donde cuando un objeto cambia, otros objetos deben ser informados o actualizar su información
- Los observados no saben cuantos observados hay
- Aplica cuando
- Un elemento depende de otro
- El cambio en un objeto requiere cambiar otro
Consecuencias:
- Permite una distribución masiva
- Cunado notifica no sabe el costo de esa notificación
Cadena de responsabilidad
Evita el acoplamiento entre el que envía la solicitud y los que pueden atenderla
- Cuando el cliente genera la solicitud esta se propaga entre los que pueden atenderla
Aplica cuando no hay nada en especifico que pueda atender la solicitud
Consecuencias:
- Reduce el acoplamiento entre el que envía y el que recibe
- Agrega flexibilidad entre asignación de responsabilidades
- No garantiza que la solicitud sea atendida