miércoles, 17 de noviembre de 2010

Patrones de diseño.

Mucha de la información que uno encuentra en internet, que explica sobre lo que son los patrones de diseño, no lo explican de manera clara a las personas que nunca antes escucharon el termino,ya que utilizan definiciones bastante formales es por ello que cuando comenzamos a estudiar dichos términos pueden tornarse algo confusos o incluso tomar otro significado.

La siguiente entrada tratare de explicar lo que es un patrón de diseño para que personas que nunca antes hallan escuchado dicho termino no se les torne tan complicada la definición.

Cuando queremos resolver determinado problema de programación, al momento que estamos programando su solución es común que ciertas instrucciones las escribamos sin pensarlo mucho ya que con la misma practica vamos construyendo nuestro programa.

Ahora imaginemos que después surge otro problema similar al anterior, solo que un poco mas complejo. En este caso caemos en la necesidad de reutilizar el código que anteriormente utilizamos en el programa y agregar los detalles que este nuevo programa lo requiera, esto para ahorrarnos un poco de trabajo y tiempo.

Con el tiempo esto se torna un tanto rutinario y los programadores, tratan de averiguar nuevas formas para que el proceso de utilizar el código sea mucho mas cómodo  y que este sea lo suficientemente versátil como para no volver a modificarlo.

Entonces los programadores se dieron cuenta de este problema de tener que reescribir todas las líneas de código una y otra vez,si así su programa lo requiriera. Es por ello que así surgen lo que hoy conocemos como patrones de diseño, una forma en que todos esos códigos utilizados anteriormente pueden volver a ser reutilizados.

Los patrones de diseño nos ayudan a que nuestro código pueda volver a ser reutilizable en el momento que así lo requiriéramos, y así realizar las tareas mucho mas complejas que nos se nos presenten y esto sin necesidad de tocar el código anterior.

Dado lo anterior podemos afirmar entonces que un patrón de programación es un conjunto de soluciones a problemas que generalmente encuentras en el diseño de un programa. Cada patrón explica cómo resolver un determinado problema, bajo determinadas circunstancias, y las ventajas y desventajas de su uso.

Dependiendo de la naturaleza del problema a resolver, será el patrón mas conveniente a utilizar, en este caso nos podemos encontrar con patrones de creación, estructurales y de comportamiento.

 

  • Patrones de creación. Estos patrones se utilizan cuando debemos crear objetos pero debemos tomar decisiones dinámicamente en el proceso de creación. Para esto lo que hacemos es abstraer el proceso de creación de los objetos para realizar la decisión de qué objetos crear o cómo crearlos para el momento en que se tenga que hacer. Patrones de creación son: Abstract Factory, Builder, Factory Method, Object Pool, Prototype y Singleton.
  • Patrones estructurales. Nos describen como utilizar estructuras de datos complejas a partir de elementos más simples. Sirven para crear las interconexiones entre los distintos objetos y que estas relaciones no se vean afectadas por cambios en los requisitos del programa. Algunos ejemplos de patrones estructurales son: Adapter, Bridge, Decorator, Facade, Flyweight y Proxy.
  • Patrones de comportamiento. Fundamentalmente especifican el comportamiento entre objetos de nuestro programa. Hay varios: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento (o Snapshot), Observer, State, Strategy, Template Method y Visitor.

 

No hay que preocuparse en este momento si todas estas definiciones tal vez suelen tornarse un poco confusas ya que aun no nos adentramos de lleno en el tema, pero ya en Programación Orientada a Objetos se vera con mucha mas detalle todas estas definiciones.

Si le interesa aprender patrones de diseño, pueden consultar el libro: UML y PATRONES, Introducción al análisis y diseño orientado a objetos el autor es Craig Larman y su editorial es PEARSON. Hay una versión en español por si les interesa ;)

Referencias recomendadas:

http://hanzcocchi.net/libro-uml-y-patrones-de-disenio/

http://msdn.microsoft.com/es-es/library/bb972240.aspx

http://www.davidvalverde.com/blog/tipos-de-patrones-de-diseno/

http://blog.innocuo.com/archive/2006/09/11/patrones-de-diseno-la-importancia-de-aprenderlos/

http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o

http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/diaz_c_a/capitulo4.pdf

1 comentario: