Alphasite

The programmers site

Estadísticas web

Estadisticas web

Publicidad

Languages

Inicio de sesión

Google AdSense

Encuesta

En línea

En este momento hay 0 usuarios y 7 invitados en línea.

Patrones de diseño: Introducción


¿Qué es un patrón de software?

En software un patrón de diseño se refiere a una determinada forma de crear software, una forma de fabricarlo, por decirlo de alguna forma para crearlo de forma correcta.

En determinados marcos de trabajo, cuando nos enfrentamos a determinados problemas en el diseño de software hay formas determinadas de enfocalos que permiten adaptar mejor los posibles cambios de dichos problemas y las distintas evoluciones que pueda sufrir el software en un futuro.

En muchos casos el patrón se adapta como anillo al dedo al problema al que nos enfrentamos y en los casos en los que no es así generalmente tienden a encajar de forma progresiva.

Un buen dominio de los patrones más comunes nos puede servir para no tener que reinventar la rueda a cada paso que damos sino que podemos hacer uso de lo que otros pensaron por nosotros (y que descubriremos en multiples situaciones).

¿Cuándo aplicar los patrones de software?

Siempre. O casi siempre.

En mi experiencia el uso de patrones de diseño es beneficioso en la mayoría de situaciones que se dan en cualquier proyecto medio complejo. Aún cuando en un principio el uso de determinados patrones de software pueda suponer una carga de trabajo adicional (cosa especialmente incomoda en los proyectos que van contrareloj) la ganancia en mantenibilidad del software merece la pena.

En la mayor parte de los casos implementar las cosas bien, pensando en adoptar un patrón adaptable que permita expandir el programa más adelante nos va a quitar muchos quebraderos en el futuro cuando el cliente quiera que cambiemos o ampliemos cosas (no creas que no va a pasar, el cliente siempre quiere cambiar algo, siempre).

La mayoría de los patrones de software que vamos a presentar consisten en acercarse a un problema concreto de una forma genérica de forma que tratamos de absorber los cambios en el problema (o las posible ampliaciones de este) de una forma genérica, lo que nos permitirá adaptarnos y mantener mejor el software durante la vida del producto.

GoF (Gang of Four)

Quizá hayas visto por ahí referirse a ciertos patrones de diseño de software como patrones GOF. Esta denominación viene dada por la publicación del patrón en un libro llamado Design Patterns: Elements of Reusable Object-Oriented Software (Patrones de diseño: Elementos reusables en software orientado a objetos) que contenía varios modelos de diseño de software y cuyos autores eran Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, conocidos como "The Gang of Four" (la banda de los cuatro).

Tipos de patrones

Generalmente los patrones de software suelen subdividirse en varias clases:

  1. Patrones creacionales: Engloban aquellos patrones de software que se centran en la forma de crear las clases y sus instancias, así como el uso que recibirán una vez creadas. Ejemplos de patrones de este tipo son el patrón Singleton o el patron Abstract Factory.
  2. Patrones estructurales: Engloban aquellos patrones de software que se centran en la composición y estructura de las clases y en la herencia entre ellas. Ejemplos de patrones de este tipo son el patrón Adapter o el patron Facade.
  3. Patrones de comportamiento: Engloban aquellos patrones de sofware que se centran en la comunicación entre las distintas clases y objetos. Ejemplos de patrones de este tipo son el patrón Observer o el patrón Strategy.

Nombres de patrones

Para toda esta serie de artículos voy a utilizar (como de costumbre) los nombres ingleses para los patrones. Esta es una costumbre común en informática por varias razones entre las que destacan el hecho de que gran parte de la bibliografía esté en ingles así como el hecho de que los nombres ingleses sean bastante universales (todo el mundo usa el mismo nombre) mientras que las traducciones pueden diferir dependiendo de quien las haga.

Así durante toda la serie se utilizarán nombres como patrón Abstract Factory en lugar de patrón de fábrica abstracta.

Fuentes adicionales

Aunque hay varios recursos en español en la red, hasta ahora los mejores ejemplos y artículos que yo he encontrado han venido dados en ingles. Un excelente recurso es el topic Design Pattern de la wikipedia inglesa, con descripciones de muchos de los patrones de diseño (GOF y otros).

Notas finales

Para el desarrollo de los distintos patrones de software intentaré ceñirme al esquema GOF (a una parte al menos) que distingue las distintas secciones que deben explicar un patrón y que fundamentalmente son:

  1. Nombre y clasificación: El nombre único del patrón y el tipo al que pertenece.
  2. Proposito (o problema): Describe el proposito del patrón o el problema que soluciona.
  3. Motivación: Proporciona un ejemplo de un contexto en que el patrón puede ser usado para resolver un problema.
  4. Aplicabilidad: Describe las sitaciones en las que el patrón puede usarse para resolver un problema.
  5. Estructura: Un diagrama que explique el funcionamiento del patrón.
  6. Código de ejemplo: Un listado de código que ejemplifique una implementación del patrón.
  7. Ejemplos reales: Descripción de ejemplos reales.

Average: 10 (2 votes)