Hace unos días, mi compañero Luis del Valle y yo estuvimos hablando en un podcast sobre el patrón de diseño modelo vista controlador. Pero lo que os preguntareis es, ¿Que es un patrón? ¿Cuantos patrones hay? y ¿Para que sirven?. Intentaré es este articulo explicar brevemente estas preguntas.
¿Que es un patrón de diseño?
En programación a veces nos encontramos con ciertos problemas que se repiten a lo largo de nuestra experiencia, como puede ser, el caso típico, hacer una clase que pueda controlar múltiples tipos de conexiones, o una clase que una vez instanciada (creado un objeto) no se puede volver a crear un nuevo objeto.
Pues bien, los patrones de diseño, son unos diseños básicos de clases e interfaces, aplicables a cualquier lenguaje orientado a objetos (c++, c#, java, php, javascript -si, aunque este último, lo de los objetos es muy especial), para solucionar cierto tipos de problemas.
¿Cuantos patrones de diseño hay?
Básicamente hay 20 patrones de diseño (aunque como vimos en el podcast, pueden haber variaciones, como es el caso del modelo vista controlador que Microsoft ha hecho una pequeña variación con el MVVM).
Algunos de ellos son estos (aconsejo a cualquier persona que este interesada, consultar un libro llamado Gang of Four):
- Singleton: Se trata de una clase que tan solo se puede instanciar una única vez, las siguientes veces que se instancia, siempre obtendremos el objeto que hemos instanciado la primera vez.
- Factory: Se trata de una clase, que pasandole el tipo de objeto que queremos instanciar, nos devuelve ese tipo en concreto.
- Abstract Factory: Parecido a la anterior, pero es capaz de trabajar con clases de diferente diseño, a partir de interfaces.
- Builder: Este patrón, nos ayuda a instanciar objetos complejos, cuyo constructor o instancia inicial sería muy engorrosa para el programador.
- Prototype: Crea objetos en clonando una instancia determinada de una clase.
- Modelo vista controlador: Intenta dividir el acceso a datos, del control de datos y de la vista o presentación de datos (explicado en el podcast 19).
¿Para que sirven?
Los patrones nos dan soluciones concretas a problemas que encontramos normalmente a desarrollar una solución en cualquier lenguaje de programación. Es simplemente para facilitarnos la vida, pero muchas veces o no son aplicables, o la solución no se adapta al 100% a nuestros requerimientos, en dicho caso, el programador es libre de usar su creatividad (no olvidemos el caso del MVVM) y adaptar el patrón a sus especificaciones personales.
Una referencia básica y primordial (cualquier libro, siempre termina haciendo referencia a este), es el Gang of Four de recomendable lectura aunque es bastante técnico.
Espero que os haya gustado el articulo, que, aunque siendo un poco escueto, trato de una tema donde se puede rellenar libros y libros.