Patrones de Diseño I : introducción

Posted by Garretus on 17 junio, 2011 in Otros

Share to Facebook
Share to Google Plus

Este es el primero de 5 post que tengo planeado hacer en el blog.

Después de trabajar con muchos desarrolladores y equipos de trabajo en PHP me he dado cuenta que la gran mayoría de compañeros de profesión no saben que son los patrones de diseño. Debido a que a mí personalmente me parece esencial para cualquier desarrollador Senior tener un buen manejo de estas herramientas he decidido hacer una serie de entradas sobre este tema. En este primer POST intentaré hablaros de tres puntos principalmente:

1.- ¿Qué son los patrones de diseño?

2.- ¿Para que sirven los patrones de diseño?

3.-  ¿Que importancia tienen?

1.- ¿Qué son los patrones de diseño?

Voy a hacer un copy-paste de la wikipedia porque creo que yo mismo no encontraré mejores palabras para definirlo :

“Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.”

2.- ¿Para que sirven los patrones de diseño?

Seguro que casi todos vosotros habéis usado el MVC (Modelo Vista Controlador) en más de una ocasión usando algún Framework o librería. ¿Os habéis dado cuenta de los fácil que es programar con este método una web? ¿Habéis observado lo límpio que queda el código y lo rápido que se programa? Pues bien el MVC no es más que un patrón de diseño que se adapta perfectamente a la programación web.

En general los objetivos de cualquier patrón de diseño los podemos resumir en los siguientes puntos:

  1. Aportar elementos reutilizables en el diseño de sistemas software.
  2. Evitar la repetición de búsqueda de soluciones a problemas ya conocidos y ya solucionados anteriormente.
  3. Definir un vocabulario común entre Analistas-Programadores.
  4. Estandarizar el modo en que se realiza el Análisis estructural de la aplicación.
  5. Facilitar el aprendizaje de las nuevas generaciones de programadores condensando conocimiento ya existente.

3.-  ¿Que importancia tienen?

Saber de patrones de diseño te ayuda a tener un lenguaje común con otros programadores. Cuando te toque modificar un programa, el autor del código seguramente tendrá que explicarte qué fue lo que hizo, cómo funciona su código y por qué hizo cualquier cambio. Se puede demorar horas. Pero esa conversación puede acortarse si te dice, aquí estoy utilizando tal o cual patrón (por ejemplo: el patrón Factory). Serás tú el que ya conozcas los conceptos detrás de esa palabra y sabrás cómo fue diseñado el programa.

También te puede interesar

4 Responses so far...

  1. BiliWeiss

    18 julio, 2011 @ 17:18

    Buen blog, acabo de conocerlo, y me sorprende mucho que un programador php hable de patrones de diseño. Sigue así, marcando la diferencia del resto de blogs ;)

  2. Garretus

    18 julio, 2011 @ 21:53

    Me alegro que te guste aunque de momento por temas personales lo voy a tener un poco parado … pero en septiembre prometo retomarlo con fuerza, gracias por los ánimos!

  3. Buen artículo, muy didáctico. A ver que patrones de diseño han seleccionado los de Google para su nuevo lenguaje de programación “Go”, parece que promete.

  4. Antonio

    14 enero, 2012 @ 12:56

    Buena entrada y concepto sobre la programación PHP, en estos momentos estoy terminando un curso sobre POO en PHP y ha despertado en mí un gran interés sobre UML, Patrones de Diseño y Frameworks, algo creo esencial para llegar a ser un verdadero desarrollador de sistemas. Lo que no sabía era que “normalmente” los programadores php no dominen estas “lides”… o al menos la de los patrones de diseño…. enhorabuena por el blog, lo seguiré atentamente ;)

Leave a Reply