Object Singleton

12/32

Lectura

A lo largo del desarrollo en Android hemos tenido casos donde queremos mantener una sola instancia de una clase para diferentes flujos y no recrear instancias. Por ejemplo, para mantener estados dentro de la aplicaci贸n que son consultados desde lugares distintos. El singleton nos ayuda en ello.

Cuando instanciamos un Singleton, esa instancia queda en memoria hasta que cerramos nuestra aplicaci贸n, dado que tenemos una variable est谩tica que puede ser llamada en cualquier flujo, por esto mismo hay que tener mucho cuidado. Recordemos que si debemos usar un singleton, lo tenemos que hacer 鈥渢hread safe鈥 haciendo que nuestro m茅todo getInstance() sea de tipo synchronized para que solo un hilo pueda acceder al m茅todo sin crear doble instancia.

Al contrario de Java, en Kotlin tenemos la facilidad de delegar este tipo de inconvenientes al lenguaje, simplemente creando un 鈥渙bject鈥, aqu铆 te dejo un ejemplo que puedes tomar de base.

Como vemos en el ejemplo, basta con la palabra reservada object y luego el nombre de la clase.

object MySingletonClass {

  
fun setData(item: Any) {

  

data.add(item)

  

}

  

}

Para llamar la instancia, simplemente lo hacemos de la siguiente manera:

class ExampleSingletonCallClass{

constructor(){

MySingletonClass.setData(Item())

}

}


En conclusi贸n, al hacer uso de un lenguaje moderno como Kotlin podremos ahorrarnos muchos costos de implementaci贸n y hacerlo de una forma m谩s f谩cil. Para explicar el patr贸n de dise帽o lo explicamos de otra manera con fines de conocer la base de este patr贸n.

Aportes 5

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Nunca hab铆a sentido tanta felicidad por escoger Kotlin y no Java 馃槑
En un resumen鈥 Te ahorras muchas lineas de c贸digo e implementaciones

Pueden revisar este blog, es sobre las implentaciones de Singleton
http://codebalance.blogspot.com/2010/08/singleton-pattern-and-beyond.html

Un poco mas de profundizaci贸n de este tema aqu铆

Aqu铆 un ejemplo implementando 鈥渢hread safe鈥 con lenguaje Java.

https://refactoring.guru/es/design-patterns/singleton/java/example#example-3

Excelente explicacion