티스토리 뷰

프로그래밍언어/Kotlin

Kotlin Singleton

데니 Denny 2019. 1. 3. 14:07
반응형
SMALL

JAVA로 Android 개발 시 종종 등장했던 Singleton을 Kotlin에서 사용하는 간단한 예제를 소개하고자 한다.


JAVA에서는 보통 다음과 같이 Singleton을 구현했었다.

public class Singleton {
    private static Singleton singleton;

    private Singleton() { }

    public Singleton getInstance() {
        if(singleton == null)
            singleton = new Singleton();
        return singleton;
    }

}

Kotlin에서는 아래와 같이 object를 사용하여 간단하게 Singleton을 하나 만들어 보았다.


object KotlinSingleton {
    val value: String = "Hello World"
}

엥? 이게 끝인가? 이게 끝이다.


Singleton을 활용하여 조금 시간이 걸릴 만한 작업을 해보았다.


object SSlowExampleSingleton {
    val value: String
    init {
        var uuid = ""
        val total = measureTimeMillis {
            println("Computing")
            for(i in 1..10_000_000) {
                uuid = UUID.randomUUID().toString()
            }
        }
        value = uuid
        println("Done computing in ${total}ms")
    }
}
@org.testng.annotations.Test
fun testSingleton() {
    println("Test started")
    for (i in 1..3) {
        val total = measureTimeMillis {
			println(SlowSingleton.value)
        }
        println("Took $total ms")
    }
}

[출력]

Test started
Computing
Done computing in 5376ms
"45f7d567-9b3e-4099-98e6-569ebc26ecdf"
Took 5377 ms
"45f7d567-9b3e-4099-98e6-569ebc26ecdf"
Took 0 ms
"45f7d567-9b3e-4099-98e6-569ebc26ecdf"
Took 0ms

object가 코드상에 정의 되어 있더라도, 사용하지 않으면 이 작업은 0초에 완료된다.


출력

Test started
Took 0 ms
Took 0 ms
Took 0 ms

코틀린에 대해 어서 빨리 익숙해지고 능숙해져야 할텐데 말이다...


반응형
LIST
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함