¿Que es un patrón de diseño?
Segun Christopher Alexander, "cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, asi como la solución a ese problema, de tal modo que se pueda aplicar esta solución un millón de veces, sin hacer lo mismo dos veces". Aunque Alexander se refería a patrones en ciudades y edificios, lo que dice también es valido para patrones de diseño orientados a objetos. Nuestras soluciones se expresan en términos de objetos e interfaces, en vez de paredes y puertas, pero en la esencia de ambos tipos de patrones se encuentra una solución a un problema dentro de un contexto.
En general, un patrón tiene cuatro elementos esenciales:
1) El nombre del patrón permite describir, en una o dos palabras un problema de diseño junto con sus soluciones y consecuencias. Al dar nombre a un patrón inmediatamente estamos incrementando nuestro vocabulario de diseño. lo que nos permite diseñar con mayor abstracción. Tener un vocabulario de patrones nos permite hablar de ellos con otros colegas, mencionarlos en nuestra documentación y tenerlos nosotros mismo en cuenta. De esta manera, resulta mas fácil pensar en nuestros diseños y trasmitirlos a otros, junto con sus ventajas e inconvenientes. Encontrar buenos nombres ha sido una de las partes mas difíciles al desarrollar nuestro catalogo.
2) El problema describe cuando aplicar el patrón. Explica el problema y su contexto. puede escribir problemas concretos de diseño (por ejemplo, como representar algoritmos como objetos), así como las estructuras de clases u objetos que son sintomáticas de un diseño inflexible. a veces el problema incluye una serie de condiciones que deben darse para que tenga sentido aplicar el patrón.
3) La solución describe los elementos que constituye el diseño, sus relaciones, responsabilidades y colaboraciones. La solución no describe un diseño o una implementacion en concreto, sino que un patrón es mas bien como una plantilla que puede aplicarse en muchas situaciones diferentes. El patrón proporciona una descripción general de elementos (en nuestro caso, clases y objetos).
4) La consecuencias son los resultados asi como las ventajas e inconvenientes de aplicar el patrón. aunque cuando se describen decisiones de diseño muchas veces no se reflejan sus consecuencias, estas son fundamentales para evaluar las alternativas de diseño y comprender los costes y beneficios de aplicar el patrón. Las consecuencias en el software suelen referirse al equilibrio entre espacio y tiempo. También pueden tratar cuestiones de lenguaje e implementacion. Por otro lado, puesto que la reutilizacion suele ser uno de los factores de los diseños orientados a objetos, las consecuencias de un patrón incluyen su impacto sobre la flexibilidad, extensibilidad y portabilidad de un sistema. Incluir estas consecuencias de un modo explicito nos ayudara a comprenderlas y evaluarlas.
Fuentes:
http://www.google.com.ar/imgres?q=patrones+de+dise%C3%B1o&um=1&hl=es&sa=N&biw=1120&bih=632&tbm=isch&tbnid=wc-XsHNP68TP9M:&imgrefurl=http://unomascero.blogspot.com/2010/09/diseno-reincidente-i-intromix-2010.html&docid=-Mcx0gMwuN1z-M&imgurl=https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrok6uALFiU5XCO4IiuYN1nAJUxBHz_35X47SBrmwrLb8piupcURfQSDk6QE0ltiNrVW_RVu7t9a70R3HOkeUivGZW-JsrA1Id1DwxUdVJIx5jU4P2OLsWiGUPCCfEiBL4t4lvyGY7zS0/s1600/20100915-portada-patrones-de-dise%2525C3%2525B1o.jpg&w=733&h=936&ei=A3BOUMDSKqL50gH7s4HgAg&zoom=1&iact=hc&vpx=499&vpy=255&dur=7403&hovh=254&hovw=200&tx=107&ty=176&sig=114319091911524527358&page=2&tbnh=138&tbnw=108&start=19&ndsp=20&ved=1t:429,r:2,s:19,i:204
http://200.69.103.48/comunidad/profesores/lwanumen/libros/Libro_Patrones2.pdf