Patrones de Diseño Abril 26, 2008
Posted by elmercarias in Arquitectura de Software.Tags: Arquitectura de Software, patrones
trackback
El martes anterior en el tema que compartió Jorge Barrientos, compañero de la Comunidad de Desarrolladores MSNETSV, tratamos un tema bastante importante y que hizo recordar cuando leí al respecto por primera vez.
En ese entonces, fue en el año 2005 cuando encontré sobre ese tema en la red, la verdad no entendí mucho a lo que se refería el tema, ya que todavía pensaba en el desarrollo tradicional (aunque se suponía que ya empezaba a realizar tareas de Arquitectura de Software) y todavía no digería todo completamente.
Esta introducción la hago porque este tipo de temas es donde hay que pensar de una forma no tan tradicional para poder comprender los conceptos y la utilidad de los Patrones de Diseño.
Entonces surge la pregunta de rigor, ¿Que es un Patrón de Diseño?
El nombre por si solo no nos dice mucho, ya que talvez pensaremos que es sobre Diseño Web, o será Diseño de Datos, o bien puede ser Diseño de Interfaz de Usuario. Y realmente no tiene nada que ver con ninguna de las cosas que comento, para no ser tan dificil el asunto empezaremos por decir que un Patron de Diseño no es mas que la experiencia de resolver problemas especificos de programación expresados en un formato estándar para poder ser implementado en cualquier lenguaje de programación.
La utilidad o su razón básica en la nos puede ayudar es para la reutilización (o reusabilidad) de código. Esto asu vez nos deja entrever que el Diseño de Patrones esta intimamente ligado a la Programación Orientada a Objetos (POO) ya que se vale de varios conceptos de la POO para definir las estrategias para la implementación del Patrón.
Ahora veamos para que nos sirven los Patrones de Diseño en el Desarrollo de Software.
Normalmente cuando decidimos realizar un nuevo sistema, comenzamos como el Ciclo de Vida del Desarrollo de Software nos invita, a la parte de Requerimientos, y casi todas las metodologías inician por esta etapa. Despues diseñamos la Base de Datos y a Programar. Es raro quien se tome el tiempo para definir piezas de software que serán reutilizadas en el sistema. Normalmente con la POO pensamos que lo tenemos todo, pero como no conocemos la aplicación de los patrones de Diseño entonces reinventamos la rueda.
Los patrones de diseño nos pueden ayudar a reutilizar muchas piezas de software, y no solamente para un Sistema en particular, sino que pueen ser reutilizados en varioas sistemas. Algunos patrones por su naturaleza serán aplicados solo para un sistema. El Patrón no es mas que una forma estandarizada de resolver un problema. Talvez muchos piensan que se perderá mucho tiempo(y realmente el tiempo de desarrollo se puede incrementar la primera vez que realizamos esta tarea) pero no es así, al final ganamos tiempo en el Mantenimiento del Sistema.
Se categorizan en 3 clases:
- Patrones de Creación: Aqui se agrupan los patrones que su propósito es la Creación de Clases y Objetos, asi como para que las utilizaremos una vez creadas. El ejemplo mas sencillo de este grupo es el de Singleton, que no es mas que la implementación de creación de una única instancia de un objeto, el cual mantiene su estado siempre. ¿Que aplicaciones practicas le encontramos a este patrón? Podríamos utilizarlo para mantener una Clase con la información básica de un Usuario conectado a nuestra aplicación, para que no tengamos que ir a la Base de Datos a recuperarla cada vez que la necesitamos.
- Patrones de Estructura: Aqui se agrupan los patrones que definen la estructura interna de una clase, por ejemplo el patrón Facade el cual muestra métodos o funciones fáciles de entender para realizar una acción, encapsulando el detalle de la complejidad de la tarea a realizar. Por ejemplo con un solo método podemos mostrar un mensaje al usuario, seteando una barra de Estado, mostrando un mensaje emergente, ver si es de error o no, etc. o la combinación de estas acciones, en una sola llamada, quitando así la complejidad de saber a que objetos asignarles el mensaje, como mostrar un mensaje emergente, y otras tareas que serían repetitivas en una aplicación.
- Patrones de Comportamiento: Aqui se agrupan los patrones que se enfocan en la comunicación entre clases y objetos. Un ejemplo es el patron Observer, el cual permite que una clase A pueda permitir a otras a registrarse para que cuando suceda un Evento en la clase A esta le notifique a la clase registrada. El patron Observer es asociado al paradigma Model-View-Controller, ya que en base a eventos que suceden en View se intercomunican con el Controller y Model.
Si quieren profundizar mas al respecto, se pueden conseguir el libro Design Patterns: Elements of Reusable Object-Oriented Software que es donde se inicio a hablar de Patrones de Diseño, por sus creadores GOF(The Gang of Four – La banda de los Cuatro), Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides.
Uno de los sitios que aglomera varios patrones importantes es http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29
Atte. Elmer Carías
“El fracaso tiene mil excusas, el éxito no requiere explicación”
muy interesante hace tiempos que estaba interesado en encontrar algo asi de sencillo. No mas que quisiera saber de alguna forma para implementar esto o un ejemplo o un caso mas practico de todo eso
Saludos Elmer
Existe herramientas para diseño que contiene una gran cantidad de modelos pre cargados con lso patrones de diseño, solo hay que incluirlo en tu proyecto para poder usarlos, luego se pude generar codigo en base a ellos para tener un ejemplo.
La que yo uso se llama Enterprise Architect y se puede obtener de http://www.sparxsystems.com.au/