No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Singleton

11/32
Recursos

Aportes 22

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

El profesor esta utilizando la misma implementaci贸n del SIngleton que se utiliza en Java鈥 pero en Kotlin es supremamente breve hacer un singleton y es de esta forma:

object UserSingleton{
 val userName="cristian"
}

Y para usarlo.

UserSingleton.userName

驴Muy breve verdad? Solo hay que declarar una clase con la palabra object en vez de class para convertirlo en un singleton.

Creo que el profesor le falta m谩s experiencia en Kotlin.

Yo usuaria Singleton, para persistir datos que necesite en todo el proceso de la aplicaci贸n, datos que no sea mutables.

Companion Object es muy parecido a @staticmethod en Python

Le falt贸 hacer al constructor del UserSingleton private

class UserSingleton private constructor()

Si no se hace Private entonces no tiene ning煤n sentido el resto de la implementaci贸n debido a que sin el podr铆amos crear tantas instancias distintas como quisieramos

Lo usaria por ejemplo para el usuario logeado, lo usaria por ejemplo si tengo un reproductor de video, siempre retornar la misma instancia del player y solo jugar con funciones internas para reproducir diferentes videos. Lo usaria para instanciar un objeto que me ayude a acceder a la base de datos, no veo la utilidad de tener muchas instancias, con una es suficiente. Bastante util

No entiendo para que ser铆a necesario crear un singleton para solo el username. No ser铆a mejor que la variable sea publica y est谩tica y usarla como UserSingleton.username? Entiendo que probablemente no sea una buena pr谩ctica por el tema de encapsulamiento y eso, pero sirve y evitar铆a crear un singleton. Por qu茅 es necesario crear un singleton all铆? Lo veo m谩s necesario para una instancia de retrofit por ejemplo, que es donde mayormente uso el singleton.

Yo usar铆a Singleton para definir instancias de SQlite, por ejemplo lo utilizo en mis proyectos para usar Room y con eso solo construyo la base de datos una sola vez.
Muy bueno el curso hasta este momento. Gracias Cristian.

Est谩s haciendo un cast de un valor nulleable a uno non-nullable, eso es una s煤per mala pr谩ctica. A煤n no me creo que este curso est茅 en la cima de toda la ruta de aprendizaje. 馃槙

Creo que falto el punto de cu谩ndo no usarlo.
Y esta claro que fue mas por temas acad茅micos que haya creado la clase de username static, pero hay que recalcarlo en el curso, ya que usarlo de esta forma nos va a acoplar fuertemente el c贸digo, y al momento de querer testear se nos complicar铆a.

SIngleton lo puedo usar para las los datos de login

驴Cu谩ndo usarlo?
Cuando queremos datos
Datos que son 煤tiles para m煤ltiples flujos
Para tener acceso global a los datos

Beneficios:
Una 煤nica instancia de los datos transversales
Acceso desde cualquier lugar
Se crea la instancia solamente cuando se va a usar

Singleton es la 煤nica instancia para toda la aplicaci贸n, se lo puede usar cuando necesitemos una sola instancia, y este podr谩 ser para m煤ltiples flujos.
Nota: los datos deben ser lo mas importante

Mayormente utilizo este patr贸n para utilidades promedio. Por ejemplo que necesite manejar c谩lculos entre fechas. Entonces creo una clase llamada DateManager, y c贸mo esta la uso com煤n en diferentes fragmentos o actividades solo para un par de cosas, entonces la hago singleton para manejarlo todo desde ah铆. RECOMENDACI脫N: No utilicen este patr贸n cuando requieran de almacenar el contexto de la aplicaci贸n, puede ocasionar problemas entre actividades y crashear tu App en escenarios muy espec铆ficos.

Yo utilizaria el Singleton para obtener variables de tipo global en todo el aplicativo.

Algo importante sobre los Singletons es que el constructor tiene que ser privado, de otra forma cualquier clase podr铆a crear una nueva instancia

Este patron usualmente lo uso para tener datos o identificadores que ocupare a traves de todas las pantallas o procesos (userId, currentOrderId, userName) etc.

Gracias, ahora me queda mucho m谩s claro en Kotlin como aplicar el patro Singleton!

companion object nos da todos los valores estaticos que tenemos en la clase

Se puede usar para almacenar los id, ejemplo si ingreso a una actividad productos al seleccionar uno producto cargo el singleton el producto, si ingreso por sus diferentes vistas siempre podre acceder directamente al id

Lo usaria para guardar los datos del usuario y usarlos en toda la app o si quiero acceder a algun dato desde otra clase

Lo usar铆a para un app de reproductor de musica

yo utilizo el patr贸n singleton para las instancias de.las bases de datos