Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- viewmodelscope
- 코틀린 이미지저장 #파일저장
- 안드로이드 mvvm
- 코틀린 트리거 버튼
- 1회용컵
- 안드로이드 sms
- Room 데이터베이스 업데이트
- 셀룰로오스-g-폴리락타이드 공중합체
- 플라스틱 생분해
- var 와 val
- apk이름변경
- json 저장
- 스레드 #코루틴
- 라이브데이터 postValue
- 1회용 플라스틱컵
- 생분해성 플라스틱
- 안드로이드 비콘
- TowmonUSB 연결오류
- 안드로이드 스튜디오 애뮬레이터
- withContext
- 일회용 플라스틱
- TwomonUSB
- bluetoothmanager
- livedata
- compse state
- 토글 험수
- compse collectAsState
- #큐구조 #큐다운로드
- 코루틴 job
- 안드로이드스튜디오 jdk
Archives
- Today
- Total
EnjoyLife
companion object 싱글턴과 커스텀 싱글턴의 차이 본문
//기본싱글턴 1
class MyClass {
companion object {
val name: String = "Kotlin"
}
}
fun main(args: Array<String>) {
println(MyClass.name) // "Kotlin"
}
//커스텀 싱글턴2
class MySingleton private constructor() {
companion object {
private var instance: MySingleton? = null
fun getInstance(): MySingleton {
return instance ?: synchronized(this) {
instance ?: MySingleton().also {
instance = it
}
}
}
}
}
fun main(args: Array<String>) {
val obj1 = MySingleton.getInstance()
}
1.안전성: companion object로 싱글턴을 만들 경우, MySingleton 클래스의 생성자가 private가 아니기 때문에,
다른 쓰레드에서 MySingleton 클래스의 생성자를 호출하여 새로운 인스턴스를 생성할 수 있습니다.
따라서 여러 쓰레드에서 동시에 MySingleton 클래스의 인스턴스를 참조할 경우, 동일한 인스턴스를 참조하지 않
을 수 있습니다. 하지만 MySingleton 클래스에 private 생성자를 사용하면, 다른 쓰레드에서 MySingleton 클래스의
인스턴스를 생성할 수 없기 때문에, 항상 동일한 인스턴스를 참조할 수 있습니다.
2.유연성: companion object로 싱글턴을 만들 경우, MySingleton 클래스의 인스턴스를 직접 생성할 수
있기 때문에, 생성자의 인자를 전달할 수 없습니다. 하지만 MySingleton 클래스에 private 생성자를 사용하면, companion object의 getInstance() 메서드를 통해서만 인스턴스를 가져올 수 있기 때문에, 생성
자의 인자를 전달하여 다양한 싱글턴을 구현할 수 있습니다.
'안드로이드 개발 > 개발팁' 카테고리의 다른 글
함수의 마지막 인자로 람다를 쓰는 이유 (0) | 2023.11.01 |
---|---|
안드로이드스튜디오 애뮬레이터 죽어도 실행안될때 (2) | 2023.10.30 |
루팅단말기일 경우 실행 차단 (0) | 2023.10.30 |
MediaBrowserService 와 MediaSessionCompat 을 이용해서 exoplayer 만들기 (0) | 2023.10.26 |
remember 와 rememberSaveable 의 차이 (0) | 2023.10.25 |