Clase Singleton en Kotlin

Singleton Class en Kotlin también se denomina Objeto Singleton en Kotlin. La clase Singleton es una clase que se define de tal manera que solo se puede crear y usar una instancia de la clase en todas partes. Muchas veces creamos dos objetos diferentes de la misma clase, pero debemos recordar que crear dos objetos diferentes también requiere la asignación de dos memorias diferentes para los objetos. Así que es mejor hacer un solo objeto y usarlo una y otra vez. 

Kotlin

// Kotlin program
fun main(args: Array<String>) 
{
  val obj1 = GFG()
  val obj2 = GFG()
  println(obj1.toString())
  println(obj2.toString())
}
  
class GFG
{
    
}

Producción:

Program Output

En el ejemplo anterior, podemos ver que ambos objetos tienen una dirección diferente, por lo que es un desperdicio de memoria. En el siguiente programa, hemos hecho lo mismo, pero hemos usado la clase singleton.

Kotlin

// Kotlin program
fun main(args: Array<String>)
{
  println(GFG.toString())
  println(GFG.toString())
}
  
// GFG is the singleton class here
object  GFG
{
    
}

Producción:

Program Output

Entonces, cuando usamos un objeto en lugar de una clase, Kotlin en realidad usa Singelton y asigna la memoria única. En Java, se crea una clase singleton creando una clase llamada Singleton . Pero en Kotlin, necesitamos usar la palabra clave object . La clase de objeto puede tener funciones, propiedades y el método init. El método constructor no está permitido en un objeto, por lo que podemos usar el método init si se requiere alguna inicialización y el objeto se puede definir dentro de una clase. Llamamos al método y las variables miembro presentes en la clase singleton usando el nombre de la clase, como hicimos en los objetos complementarios .

Kotlin

// Kotlin program
fun main(args: Array<String>) 
{
  println(GFG.name)
  println("The answer of addition is ${GFG.add(3,2)}")
  println("The answer of addition is ${GFG.add(10,15)}")
}
  
object  GFG
{
   init 
  {
    println("Singleton class invoked.")
  }
     
  var name = "GFG Is Best"
  fun add(num1:Int,num2:Int):Int
  {
    return num1.plus(num2) 
  }
}

Producción:  

Addition Output

Propiedades de la clase Singleton

Las siguientes son las propiedades de una clase singleton típica:

  • Solo una instancia : la clase singleton tiene solo una instancia y esto se hace proporcionando una instancia de la clase, dentro de la clase.
  • Accesible globalmente : la instancia de la clase singleton debe ser accesible globalmente para que cada clase pueda usarla.
  • Constructor no permitido : podemos usar el método init para inicializar nuestras variables miembro.

Importancia de los objetos Singleton en Android 

A continuación, se incluyen algunos puntos que explican la importancia de los objetos singleton en Android junto con algunos ejemplos, dónde se deben usar y las razones por las que los desarrolladores de Android deben aprender sobre los objetos singleton.

  • Como sabemos, cuando queremos una sola instancia de un objeto en particular para toda la aplicación, usamos Singleton. Los casos de uso comunes cuando usa el singleton es cuando usa Retrofit para cada solicitud que realiza a través de la aplicación, en ese caso, solo necesita la única instancia de la actualización, ya que esa instancia de la modificación contiene algunas propiedades adjuntas a como Gson Converter (que se utiliza para la conversión de la respuesta JSON a objetos Java) y Moshy Converter, por lo que desea reutilizar esa instancia y crear una nueva instancia una y otra vez sería una pérdida de espacio y tiempo, por lo que en este caso , tenemos que usar objetos singleton.
  • Considere el caso cuando está trabajando con el repositorio en la arquitectura MVVM , por lo que en ese caso, solo debe crear 1 instancia del repositorio, ya que los repositorios no van a cambiar, y la creación de diferentes instancias resultaría en un incremento de espacio y una pérdida de tiempo. .
  • Supongamos que tiene una aplicación y los usuarios pueden iniciar sesión en ella después de someterse a la autenticación de usuario, por lo que si al mismo tiempo dos usuarios con el mismo nombre y contraseña intentan iniciar sesión en la cuenta, la aplicación no debería permitirlo debido a problemas de seguridad. Entonces, los objetos singleton nos ayudan aquí a crear solo una instancia del objeto, es decir, el usuario aquí, de modo que no sea posible realizar múltiples inicios de sesión. Espero que estos ejemplos sean suficientes para satisfacer al lector y explorar más sobre los objetos singleton en Kotlin para que puedan usar objetos singleton en sus proyectos de Android.

Ejemplo de programa de Android que muestra el uso del objeto Singleton:

Kotlin

// sample android application program in kotlin
// showing use of singleton object
package com.example.retrofitexample
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.GET
import retrofit2.http.Query
  
const val  BASE_URL = "https://newsapi.org/"
const val API_KEY = "ff30357667f94aca9793cc35b9e447c1"
  
interface NewsInterface
{
    @GET("v2/top-headlines?apiKey=$API_KEY")
    fun getheadlines(@Query("country")country:String,@Query("page")page:Int):Call<News>
    // function used to get the headlines of the country according to the query 
    // written by developer
}
  
// NewsService is the instance of retrofit made by using Singleton object
object  NewsService
{
    val newsInstance:NewsInterface
    init {
        val retrofit=Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
        newsInstance=retrofit.create(NewsInterface::class.java)
    }
}

Publicación traducida automáticamente

Artículo escrito por lavishgarg26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *