[Kotlin] 싱글턴 패턴 & Object 설명 & 예제
- Language/Kotlin
- 2021. 2. 4.
728x90
Object
-
기존의 Class 객체는 단지 인스턴스 객체를 만들기 위한 '틀' 이기 때문에
내부에 있는 속성이나 함수를 사용하려면var a = Person("박서준",1992)
와 같은 생성자를 통해 실제가 되는 인스턴스 객체를 만들어야 했었음 -
여러개의 인스턴스가 필요하지 않으며, 단하나의 객체만으로 공통적인 속성과 함수를 사용해야 하는 코드에서는 굳이 Class를 쓸 필요 없이 Object 를 사용하면 된다.
Singleton Pattern 싱글턴 패턴
클래스의 인스턴스를 단 하나만 만들어 사용하도록 하는 코딩 아키텍쳐 패턴
코틀린은 이 싱글턴 패턴을 언어차원에서 지원한다.
fun main() {
//참조 연산자 사용하지 않고 직접 쓴다
println(Counter.count)
Counter.countUp()
Counter.countUp()
println(Counter.count)
Counter.clear()
println(Counter.count)
}
//example : 코드 아무 곳에서나 호출하여 counting 하는 Counter object
//인스턴스를 생성하지 않고 그 자체로 객체이다 -> 클래스와 다른 점(생성자 사용하지 않는다)
object Counter {
//초기값
var count = 0
fun countUp() {
count++
}
fun clear() {
count = 0
}
}
- Object로 선언된 객체는 '최초 사용시' 자동으로 생성되며 이후에는 코드 전체에서 공용으로 사용될 수 있으므로 프로그램이 종료되기 전까지 공통적으로 사용할 내
용들을 묶어 만드는게 좋다.
Companion Object
기존의 클래스에 만드는 Object
클래스의 인스턴스 기능은 그대로 유지하면서
인스턴스간에 사용할 공용 속성 및 함수
별도로 만드는 기능
기능적으로는 기존의 언어의 Static 멤버와 비슷
Staitc : 클래스 내부에서 별도의 영역에 고정적으로 존재하여
인스턴스를 생성하지 않아도 공용으로 사용가능한 속성이나 함수
fun main() {
var a = FoodPoll("짜장")
var b = FoodPoll("짬뽕")
a.vote()
a.vote()
b.vote()
b.vote()
b.vote()
println("${a.name} : ${a.count}")
println("${b.name} : ${b.count}")
println("총계 : ${FoodPoll.total}")
}
class FoodPoll(val name: String) {
companion object {
//전체 투표수
var total = 0
}
//개별 투표수
var count = 0
fun vote() {
total++
count++
}
}
728x90
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 클래스의 다형성(+as, is) 설명 & 예제 (0) | 2021.02.08 |
---|---|
[Kotlin] Observer 패턴(옵저버 패턴) 설명 & 예제 (0) | 2021.02.04 |
[Kotlin] 람다 함수 보충 설명, 스코프 함수 설명 & 예제 (0) | 2021.02.03 |
[Kotlin] 고차함수, 람다함수 설명 & 예제 (0) | 2021.02.03 |
[Kotlin] 스코프, 접근제한자 설명 & 예제 (0) | 2021.02.02 |