Patrones De Diseño

Cuando estamos en la tarea de desarrollar un software se nos ocurren diversas formas de empezar y diversas maneras de dar solución a cualquier problema que se nos presente durante el desarrollo de dicho software, pero se nos facilitaria màs y ahorrariamos trabajo si aplicamos algunas soluciones ya especificadas y que anteriormente fueron de utilidad en otros software como los son los patrones de diseño.

¿Què son?
Los patrones de diseño son una solución común, elegante y probada para un problema especifico, son soluciones recurrentes al diseño de software.

Un patrón de diseño es el trabajo de una persona que ya se encontró con el problema anteriormente, intentó muchas soluciones posibles, y escogió y describió una de las mejores, los patrones evitan la continua busqueda de soluciones a problemas ya conocidos y ademas solucionados.

Algunos patrones de diseño son tan importantes que ya vienen incorporados en Java. Otros vienen incluidos en otros lenguajes, tal vez algunos nunca lleguen a estar incorporados a ningún lenguaje, pero continúan siendo útiles.

Si conocemos totalmente el dominio y el problema, puede que sea razonable el uso de patrones desde el principio, depende del desarrollador que patrón utilizar en su software, para esto debe buscar un equilibrio de las ventajas y desventajas que se le surjan al usar cualquier patrón. La presencia de un patron o patrones en un software no es obligatoria solo es aconcejable en caso de tener el mismo problema, siempre teniendo en cuenta que en un caso particular puede no ser aplicable. La aplicación de un patrón no es de manera mecánica requiere una o varias adaptaciones.

No debemos anticiparnos en el uso de patrones de diseño en nuestros programas, primero debemos asegurarrnos bien que si es o son necesarios.

Los patrones de diseño pueden incrementar o disminuir la capacidad de comprensión de un diseño o de una implementación, disminuirla al añadir accesos indirectos o aumentar la cantidad de código.

Tipos de patrones

Los patrones se clasifican en 3 grandes categorías basándose cada una en un propósito:

  • Patrones creacionales: tratan con las formas de crear instancias de objetos. Nos ayudan a encapsular y abstraer dicha creación. Entre los patrones creacionales se encuentran: Patrón de Fábrica Abstracta, Patrón Constructor, Patrón del Método de Fabricación, Patrón Prototipo, Patrón de Instancia Única (Singleton).

  • Patrones estructurales: describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades. Solucionan problemas de composición (agregación) de clases y objetos. Entre los patrones estructurales se encuentran: Patrón Adaptador, Patrón Puente, Patrón Compuesto, Patrón Decorador, Patrón de Fachada, Patrón de Peso Mosca, Patrón Apoderado.

  • Patrones de comportamiento: ayudan a definir la comunicación e iteración entre los objetos de un sistema. Reduce el acoplamiento entre los objetos. Entre los patrones de comportamiento se encuentran: Patrón de Cadena de Responsabilidad, Patrón de Comando, Patrón Intérprete, Patrón Iterador, Patrón Mediador, Patrón Memento, Patrón Observador, Patrón de Estado, Patrón de Estrategia, Patrón del Método Plantilla, Patrón Visitante.