Menulis Singleton Pattern : Kotlin
Kotlin tidak memliki keyword static, jadi untuk menulis sebuah Singleton Pattern pada kotlin ada beberapa cara :
- Companion Object
class SomeClass {
companion object Factory {
fun create(): SomeClass = SomeClass()
}
}dan untuk menggunakannya
val instance = SomeClass.create()
2. Object Declaration
cara kedua adalah dengan Object Declaration
object MySingleton {
fun foo(){
// todo
}
}dan cara menggunakannya sebagai berikut
val instance = MySingleton.foo()
Implementasi di android
Singleton.kt
package com.pratamawijaya.testkotlin
import android.util.Log
/**
* Created by Pratama Nur Wijaya
* Date : Oct - 10/13/16
* Project Name : TestKotlin
*/
object Singleton {
var b: String? = null
fun doSomething() {
Log.d("do", "Do something")
}
}
MainActivity.kt
package com.pratamawijaya.testkotlin
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Log
class MainActivity : AppCompatActivity() {
companion object Factory {
val MAX_NUMBER: Int = 500
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Singleton.b = "foo"
Log.d("debug", "" + Singleton.b)
Log.d("debug", "max number : " + MainActivity.MAX_NUMBER)
Singleton.doSomething()
}
}

sumber : https://kotlinlang.org/docs/reference/object-declarations.html#object-expressions-and-declarations