Menulis Singleton Pattern : Kotlin

Kotlin tidak memliki keyword static, jadi untuk menulis sebuah Singleton Pattern pada kotlin ada beberapa cara :

  1. 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