Skip to content

Instantly share code, notes, and snippets.

@YoloSwagBot
Created September 6, 2019 20:30
Show Gist options
  • Save YoloSwagBot/65e62e36cf1fcbe105acf45d224ffc8e to your computer and use it in GitHub Desktop.
Save YoloSwagBot/65e62e36cf1fcbe105acf45d224ffc8e to your computer and use it in GitHub Desktop.
Kotlin Singleton Pattern
import PACKAGE
open class SingletonHolder<out T: Any, in A>(creator: (A) -> T) {
private var creator: ((A) -> T)? = creator
@Volatile private var instance: T? = null
fun getInstance(arg: A): T {
val i = instance
if (i != null) {
return i
}
return synchronized(this) {
val i2 = instance
if (i2 != null) {
i2
} else {
val created = creator!!(arg)
instance = created
creator = null
created
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment