En wikipedia el patrón singleton se define como:
‘singleton’ o ‘instancia única’ es un patrón de diseño que permite restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.
El objetivo de este patrón es garantizar que solo exista una instancia de una clase y que dicha instancia sea accesible dentro del sistema.
Para implementar este patrón en Go podemos utilizar sync.Once, esta estructura expone la función Do la cual nos ofrece la posibilidad de ejecutar código solamente una vez y además es thread safe.
El siguiente código muestra como utilizar esta esta estructura e implementar el patrón singleton.
|
|
Agreguemos el siguiente código dentro de la función main para comprobar el comportamiento del código.
|
|
El código mostrará los siguientes mensajes en la consola y podrás notar que el código dentro de la función Do se ejecutó una sola ocasión.
|
|
De esta forma hemos implementado de una forma sencilla el patrón singleton con Go.
Happy coding!