Los patrones de comportamiento definen la forma en que los objetos interactúan entre sí, permitiendo seleccionar algoritmos en tiempo de ejecución y suscribirse a eventos específicos.
Los patrones comportamentales nos ayudan a definir la forma en la que los objetos interactúan entre ellos.
Template Method: Especifica el esqueleto de un algoritmo, permitiendo a las subclases definir cómo implementan el comportamiento real.
Strategy: Permite la selección del algoritmo que ejecuta cierta acción en tiempo de ejecución.
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.
Command: Son objetos que encapsulan una acción y los parámetros que necesitan para ejecutarse.
Patrones Estructurales
Los patrones estructurales nos ayudan a definir la forma en la que los objetos se componen.
Facade: Una fachada es un objeto que crea una interfaz simplificada para tratar con otra parte del código más compleja.
Decorator: Permite añadir funcionalidad extra a un objeto (decora el objeto) sin modificar el comportamiento del resto de instancias.
Adapter: Nos ayuda a definir una clase intermedia que sirve para que dos clases con diferentes interfaces puedan comunicarse.
Patrones Creacionales
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.
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.
Factory Method: Expone un método de creación, delegando en las subclases la implementación de este método.
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: 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.
Patrones de Diseño
Son formas “estandarizadas” de resolver problemas comunes de diseño en el desarrollo de software.
Proporcionan un vocabulario común entre desarrolladores
Condensan y simplifican el aprendizaje de las buenas prácticas
Estandarizan la resolución de determinados problemas
Conforman un amplio catálogo de problemas y soluciones
Estandarizan la resolución de determinados problemas
Tipos de patrones
Diseño de objeto
Asociaciones
Son el pegamento de nuestro modelo de objetos, y proporcionan vias de acceso entre objetos siendo entidades conceptuales utiles para el modelado y el analisis
Algoritmo
El analisis de especificaciones dice lo que hace la operacion desde el punto de vista de sus clientes y los algoritmo muestran como se hace
Asignar la responsabilidad de las operaciones a las clases adecuadas
Seleccionar algoritmo que minimicen el costo de implementar las operaciones
Selecionar estructuras de datos adecuados para algoritmo
Controles
El diseñador debe refinar la estrategia para implementar los modelos de estados y sucesos presentes en el modelo dinamico
Utilizacion de tareas concurrentes
Utiliza la posicion del programa para almacenar el estado
Implementacion directa de un mecanismo de maquina de estados
El diseño de objetos es analogico a la fase preliminar de diseño del ciclo de vida de desarrollo de software tradicional
La fase de diseño de objetos determina las definiciones completas de las clases asociaciones que se utilizaran en la implementacion , asi como las interfaces y algoritmos de los metodos utilizados para implementar las operaciones
DISEÑO
Diseños de sistemas
Es la estrategia de alto nivel para resolver un problema y construir una solucion
Incluye
El manejo de condiciones de frontera
La correspondencia entre el sistema y el hardware
La seleccion de componentes hechos y heredados
La definicion de los objetos de diseño
Descomposicion del sistema en subsistema
Subsistemas y clases
Cada uno de los componentes principales de un sistema se llama subsistema
Son las que constituyen un marco de trabajo para el diseño detallado