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!