Patrones de diseño de software: conceptos, tipos y propósitos
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 5,47 KB
[ap] Patrones de diseño
[ap] Patrones de diseño: Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, así como la solución a ese problema, de tal modo que se pueda aplicar esta solución indefinidamente sin repetir exactamente los mismos pasos cada vez. La diferencia entre un patrón y un lenguaje está en su alcance: en un patrón tanto la solución como el problema son lo suficientemente genéricos como para ser independientes del lenguaje de programación; en cambio, un lenguaje es un patrón de bajo nivel específico de un lenguaje de programación.
Características
- Refinan un subsistema o un componente dentro de un sistema software.
- Describen una estructura a la que muchas veces recurrimos para resolver problemas de diseño.
- No afectan la arquitectura global de un sistema; actúan a escala de componentes o subsistemas.
- Son patrones de escala media.
- No dependen del lenguaje de implementación.
- Permiten resolver problemas complejos y facilitan la cooperación efectiva entre componentes.
Elementos
- Nombre: debe describir de forma breve el problema, la solución y la consecuencia.
- Problema: indica cuándo se puede aplicar el patrón; explica el problema y su contexto.
- Solución: es una descripción abstracta que detalla los elementos que forman el diseño, sus relaciones, responsabilidades y cooperaciones.
- Consecuencias: los buenos resultados e inconvenientes de aplicar el patrón; son críticas para evaluarlo y entender los costos y beneficios.
¿A qué nos ayudan los patrones?
- Encontrar objetos: lo más complicado del diseño orientado a objetos es descomponer un sistema en objetos. Los patrones ayudan a identificar abstracciones menos obvias y los objetos que las expresan.
- Determinar la granularidad de los objetos: los objetos pueden variar enormemente en tamaño y número; los patrones ayudan a decidir qué debe ser un objeto.
- Especificar interfaces: los patrones ayudan a definir interfaces identificando sus elementos clave y los tipos de datos que se envían a la interfaz, además de especificar relaciones entre interfaces.
- Favorecer la reutilización: promueven soluciones reutilizables y coherentes.
- Relacionar tiempo de ejecución y tiempo de compilación: proporcionan estructuras que equilibran decisiones en ambos tiempos.
Clasificación
Creación
Los patrones de creación abstraen el proceso de construcción de objetos, logrando que este sea más flexible mediante la separación de responsabilidades. Ayudan a que un sistema sea independiente de cómo se crean, componen y representan sus objetos. Un patrón creacional de clases usa la herencia para cambiar la clase de la instancia a crear, mientras que uno de objetos delega la creación de la instancia a otro objeto.
- Singleton (Único): garantiza que una clase tenga una única instancia y proporciona un punto de acceso global a ella.
- Builder (Constructor): separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción puede crear diferentes representaciones.
Estructurales
Los patrones estructurales se ocupan de cómo combinar clases y objetos para formar estructuras mayores. Ayudan a conectar dos clases incompatibles o a añadir funcionalidad a objetos. Los patrones estructurales de clases usan la herencia para componer interfaces o implementaciones, mientras que los de objetos describen formas de componer objetos para obtener nueva funcionalidad.
- Composite (Compuesto): combina objetos en estructuras de árbol para representar jerarquías de todo-parte y permite que los clientes traten de forma uniforme a objetos individuales y compuestos.
- Fachada (Facade): proporciona una interfaz unificada para un conjunto de interfaces en un subsistema, definiendo una interfaz de alto nivel que facilita el uso del subsistema.
Comportamiento
Los patrones de comportamiento tienen que ver con algoritmos y la asignación de responsabilidades a objetos. Describen patrones de clases y objetos, así como los patrones de comunicación entre ellos. Los patrones de comportamiento basados en clases usan la herencia para distribuir comportamiento entre clases; los basados en objetos usan la composición. Algunos describen cómo cooperan grupos de objetos para realizar tareas complejas, reduciendo dependencias; otros se centran en encapsular el comportamiento y delegar peticiones a objetos específicos.
Ejemplos típicos: Iterator, Observer, State, Strategy, entre otros.
[ap] Los propósitos del Diseño son:
- Adquirir una comprensión profunda de aspectos relacionados con requerimientos no funcionales y restricciones del entorno de implementación.
- Refinar los requerimientos para subsistemas, clases e interfaces individuales.
- Descomponer el trabajo de implementación en piezas manejables por diferentes equipos de desarrollo.
- Capturar interfaces entre subsistemas.
- Crear una abstracción de la implementación del sistema.