싱글톤
1. 싱글톤 정리
싱글톤이란 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 객체를 만들어 사용하는 디자인 패턴을 말한다.
즉 생성자의 호출이 반복적으로 이루어 지더라도 실제로 생성되는 객체는 최초에 생성된 객체를 반환해 주는 것이다.
객체를 생성할 때 생성자가 호출되고 메모리에 올라가는 등 비용이 발생하게 된다.
만약 객체를 생성하는 비용이 크다고 한다면, 객체를 자주 생성하는 일은 시스템에 큰 부담을 가져올 수 있다.
싱글톤 패턴은 객체를 한번만 생성하고 생성된 객체를 재사용 하면서 객체의 재생성 비용을 줄이는 패턴이다.
하지만 여기서 고려해야될 점이 있다.
1. 인스턴스화 하는 비용을 줄일 수 있다는 장점을 가지고 있지만, 한번 생성한 인스턴스를 반납하지 않기 때문에 무분별한 싱글톤 패턴 사용은 오히려 메모리 낭비를 일으킬 수 있다.
2. 싱글톤 패턴은 객체간 결합도를 높이기 때문에 테스트가 어렵고, 멀티 쓰레드 환경에서 동기화 문제를 해결해야 한다.
2. Java의 static VS Kotlin의 object
1. 사용 방법에서의 차이
Java에서는 싱글톤 패턴을 구현하기 위해 많은 보일러 플레이트 코드가 발생하지만 kotlin에서는 object키워드로 간편하게 싱글톤 패턴을 구현할 수 있다.
2. 인스턴스의 생성 시점
Java에서는호출되는 시점에서 인스턴스가 생성되지만 Kotlin의 object는 프로세스가 메모리 상에 올라갈 때 곧바로 생성된다.
코틀린은 사용되지 않을 때도 메모리에 인스턴스가 존재할 수 있다는 점에 한계가 존재하여 by lazy 을 이용하여 지연 생성을 통해 호출될 때 메모리 상에 해당 인스턴스를 올라가도록 하는것이 좋다.
'안드로이드(Kotlin)' 카테고리의 다른 글
Kotlin 코틀린의 Coroutine (1) | 2023.02.09 |
---|---|
Kotlin 코틀린의 object VS companion object (0) | 2022.08.30 |
Kotlin 코틀린의 object와 class 키워드 (0) | 2022.08.30 |
Kotlin 코틀린의 Retrofit (0) | 2022.08.26 |
Kotlin 코틀린의 RecyclerView (0) | 2022.08.25 |