What is Singleton?

Singleton is an Object Oriented pattern, where class can have only one instance
To create a singleton for a class in Kotlin by Object declaration feature, for this we will use object keyword



object SingletonSample {

    // body of class

}

an object declaration can have state and behaviour. We can call this by . notation



Read What is a companion object in kotlin



Example


object Sample {
    private var a: Int = 0
    var b: Int = 1
    fun callInt(): Int {
        a = a+12
        return a
    }
}
fun main(args: Array) {
    val result: Int
    result = Sample.callInt()
    println("b = ${Sample.b}")
    println("result = $result")
}

While run the above program the output will be


b = 1
result = 12


Example 2


open class Animal() {
    fun eat() = println("Eat Food")
    fun work() = println("Few Animals Do work for human")
    open fun giveMilk() = println("Animals can give Milk?")
}
fun main(args: Array) {
    val animal = object : Animal() {
        override fun giveMilk() = println("Cow gives Milk")
    }
    animal.eat()
    animal.work()
    animal.giveMilk()
}

While run the above program the output will be


Eat Food
Few Animals Do work for human
Cow gives Milk


Example 3:


If an implementing class contains constructor with arguments then


open class Animal(type:String) {
    var anim=type;
    fun eat() = println("Eat Food")
    fun work() = println(anim+" Do work for human")
    open fun giveMilk() = println("$anim can give Milk?")
}
fun main(args: Array) {
    val animal = object : Animal("Cow") {
        override fun giveMilk() = println("Cow gives Milk")
    }
    animal.eat()
    animal.work()
    animal.giveMilk()
}


While run the above program the output will be


Eat Food
Cow Do work for human
Cow gives Milk