You are on page 1of 3

Patrones de diseo.

Como analistas y programadores vamos desarrollando a diario nuestras habilidades para


resolver problemas usuales que se presentan en el desarrollo del software. Por cada
problema que se nos presenta pensamos distintas formas de resolverlo, incluyendo
soluciones exitosas que ya hemos usado anteriormente en problemas similares. Es as
que a mayor experiencia que tengamos, nuestro abanico de posibilidades para resolver
un problema crece, pero al final siempre habr una sola solucin que mejor se adapte a
nuestra aplicacin. Si documentamos esta solucin, podemos reutilizarla y compartir esa
informacin que hemos aprendido para resolver de la mejor manera un problema
especfico.
Los patrones del diseo tratan los problemas del diseo que se repiten y que se
presentan en situaciones particulares del diseo, con el fin de proponer soluciones a ellas.
Por lo tanto, los patrones de diseo son soluciones exitosas a problemas comunes.
Existen muchas formas de implementar patrones de diseo. Los detalles de las
implementaciones son llamadas estrategias.
Fue por los aos 1994, que apareci el libro "Design Patterns: Elements of Reusable
Object Oriented Sofware" escrito por los ahora famosos Gang of Four (GoF, que en
espaol es la pandilla de los cuatro) formada por Erich Gamma, Richard Helm, Ralph
Johnson y John Vlissides. Ellos recopilaron y documentaron 23 patrones de diseo
aplicados usualmente por expertos diseadores de software orientado a objetos. Desde
luego que ellos no son los inventores ni los nicos involucrados, pero ese fue luego de la
publicacin de ese libro que empez a difundirse con ms fuerza la idea de patrones de
diseo.
El grupo de GoF clasificaron los patrones en 3 grandes categoras basadas en su
PROPSITO: creacionales, estructurales y de comportamiento.
* Creacionales: Patrones creacionales tratan con las formas de crear instancias de
objetos. El objetivo de estos patrones es de abstraer el proceso de instanciacin y ocultar
los detalles de cmo los objetos son creados o inicializados.
* Estructurales: Los patrones estructurales describen como las clases y objetos pueden
ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades.

Estos objetos adicionados pueden ser incluso objetos simples u objetos compuestos.
* Comportamiento: Los patrones de comportamiento nos ayudan a definir la comunicacin
e iteracin entre los objetos de un sistema. El propsito de este patrn es reducir el
acoplamiento entre los objetos.
En el segundo nivel, ellos clasificaron los patrones en 2 mbitos: Clases y objetos. Es as
que, tenemos 6 tipos de patrones:
Creacionales
* Creacional de la Clase
Los patrones creacionales de Clases usan la herencia como un mecanismo para lograr la
instanciacin de la Clase. Por ejemplo el mtodo Factora.
* Creacional del objeto
Los patrones creacionales de objetos son ms escalables y dinmicos comparados de los
patrones creacionales de Clases. Por ejemplo la Factora abstracta y el patrn Singleton.
Estructurales
* Estructural de la Clase
Los patrones estructurales de Clases usan la herencia para proporcionar interfaces ms
tiles combinando la funcionalidad de mltiples Clases. Por ejemplo el patrn Adaptador
(Clase).
* Estructural de Objetos
Los patrones estructurales de objetos crean objetos complejos agregando objetos
individuales para construir grandes estructuras. La composicin de l patrn estructural del
objeto puede ser cambiado en tiempo de ejecucin, el cual nos da flexibilidad adicional
sobre los patrones estructurales de Clases. Por ejemplo el Adaptador (Objeto), Facade,
Bridge, Composite.
Comportamiento
* Comportamiento de Clase
Los patrones de comportamiento de Clases usan la herencia para distribuir el
comportamiento entre Clases. Por ejemplo Interpreter.

* Comportamiento de Objeto
Los patrones de comportamiento de objetos nos permite analizar los patrones de
comunicacin entre objetos interconectados, como objetos incluidos en un objeto
complejo. Ejemplo Iterator, Observer, Visitor.

Patron Singleton

El patrn de diseo singleton (instancia nica) est diseado para restringir la creacin de
objetos pertenecientes a una clase o el valor de un tipo a un nico objeto.
Su intencin consiste en garantizar que una clase slo tenga una instancia y proporcionar
un punto de acceso global a ella.
El patrn singleton se implementa creando en nuestra clase un mtodo que crea una
instancia del objeto slo si todava no existe alguna. Para asegurar que la clase no puede
ser instanciada nuevamente se regula el alcance del constructor (con atributos como
protegido o privado).
La instrumentacin del patrn puede ser delicada en programas con mltiples hilos de
ejecucin. Si dos hilos de ejecucin intentan crear la instancia al mismo tiempo y esta no
existe todava, slo uno de ellos debe lograr crear el objeto. La solucin clsica para este
problema es utilizar exclusin mutua en el mtodo de creacin de la clase que implementa
el patrn.
Las situaciones ms habituales de aplicacin de este patrn son aquellas en las que dicha
clase controla el acceso a un recurso fsico nico (como puede ser el ratn o un archivo
abierto en modo exclusivo) o cuando cierto tipo de datos debe estar disponible para todos
los dems objetos de la aplicacin.
El patrn singleton provee una nica instancia global gracias a que:
La propia clase es responsable de crear la nica instancia.
Permite el acceso global a dicha instancia mediante un mtodo de clase.
Declara el constructor de clase como privado para que no sea instanciable directamente.

You might also like