en Javascript

Patrones de Diseño en Javascript: El patrón Singleton

 -

El patrón singleton es uno de los patrones de diseño más populares.

La idea general de este patrón es la de asegurar que una clase genera una única instancia, es decir, limitar la instanciación de una clase a un único objeto.

En lenguajes basados en clases como Java, cualquier objeto que creemos tiene que ser instanciado por una clase. Asi que  este patrón tiene más sentido en este tipo de lenguajes si queremos asegurar que una clase instancia un sólo objeto, y generar una asociación uno-a-uno entre la clase y su intancia.

En Javascript, sin embargo, podemos crear un objeto directamente. Por lo que un singleton en su forma mas simple podria ser esto:

Asi que los singletons los podemos utilizar en Javascript sencillamente como namespaces que aislan el código del namespace global y ofrecen un único punto de acceso para las funciones.

Podriamos llevar este código más allá y añadir miembros y metodos privados. Una vez hecho esto, podemos exponer sólo aquello que queramos hacer publico:

Si queremos acercarnos más al concepto clásico de singleton con Javascript, podemos montar una clase para que instancie el objeto sólo una vez. Para ello necesitamos hacer el constructor privado y proveer de un metodo publico que devuelva la instancia (y que controle que sólo se crea una):

¿Qué opinas de los patrones de diseño? ¿Los aplicas en tu trabajo diario? ¿Qué patron de diseño es el que más utilizas? ¿Qué opinas del patrón Singleton?

Esperamos vuestros comentarios.

 Enlaces y más

  • http://www.solomacs.com toni

    Fantástica explicación! Así es muy facil de entender ¿Explicarás más patrones de diseño?

  • http://www.covertura.com juanmaguitar

    @Toni, thanks!!!

    Esa es la idea, a ver si poco a poco vamos explicando más patrones de diseño.

    ¿Alguna idea sobre cual deberia ser el proximo? 😉

  • http://rub3nbdn.obolog.com rub3nbdn

    ¡Bravo Juanma! Muy buena entrada 😀

    ¿Para el próximo, que te parece el patrón Lazy? Es bastante potente y curioso a la vez.

  • http://www.covertura.com juanmaguitar

    Gracias Ruben!!

    Tomo nota :-)

  • http://www.sologicmedia.com/es Diseño web Costa Bla

    Buena entrada en el blog

  • http://diseno-web-velevu.blogspot.com/ Jessica

    Me cae muy bien el Singleton, y en general, toda la programación orientada a objetos; Python, por ejemplo.

    Empecé a conocer este mundillo con el viejo Actionscript, las clases y objetos y extraño poder manejar un site entero, en html, con un único control centralizado de todos los eventos :-(

  • http://hispanama.com Construcción de piscinas en Panamá

    Hormigón proyectado en Panamá

    Hola.
    Quería presentarte una web dedicada Construcción de piscinas en Panamá es muy interesante y tambien trabajan en españa con el nombre de acuaeuropa (Mosaiquillo)

  • http://www.xn--diseowebcordoba-1qb.org/ Jesus

    Gracias por el post!