Patrón Singleton en Kotlin para Gestión de Estados en Android
Clase 12 de 32 • Curso de Patrones de Diseño en Android
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 “thread 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 “object”, 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.