싱글톤 패턴
생성자가 여러 차례 호출이 되더라도 실제로 생성되는 객체는 하나를 리턴하는 디자인 패턴이다.
디자인 패턴에 대해 궁금하다면 아래의 페이지를 확인하길 바란다.
디자인 패턴
객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴. 여러 사람이 협업해서 개발
namu.wiki
코틀린에서는 이 싱글톤 패턴을 처리하기 위한 고유의 문법 object라는 개념을 가지고 있다.
오브젝트
아래의 코드를 바탕으로 오브젝트를 설명하겠다.
object Sole{
val number = 1
fun sayHello() : String{
return "Hello Object"
}
}
오브젝트를 사용하면 클래스와 달리 따로 선언할 필요가 사라진다. 메인 함수를 보자.
// 오브젝트
println(Sole.number) // 1
println(Sole.sayHello()) // Hello Object
// 일반 클래스
val notSole = NotSole()
println(notSole.number) // 1
println(notSole.sayHello()) // Hello Object
오브젝트는 바로 사용이 가능하나 일반 클래스는 따로 선언이 필요하다.
그렇다면 오브젝트만 사용하면 될까? 안타깝게도 하나의 패키지에는 하나의 오브젝트만 사용할 수 있다. 이 아쉬움을 약간이라도 달래주는 것이 있으니 바로 Companion Object이다.
Companion Object
Companion Object는 일반 클래스에서 사용이 가능하다. (아쉽게도 object에서는 사용할 수 없다.)
class Meal{
val lunch = "Kimbap"
companion object {
val dinner = "Steak"
fun showDiet(menu : String) : String{
return "Today\'s dinner is $menu"
}
}
}
Companion Object에 한해서 클래스를 따로 선언하지 않고도 내부의 객체를 자유롭게 사용할 수 있다.
// Companion Object
println(Meal.showDiet(Meal.dinner)) // Today's dinner is Steak
Meal 클래스의 변수 lunch는 사용하려면 클래스 선언이 필수이다.
val lunch = Meal()
println(Meal.showDiet(lunch.lunch)) // Today's dinner is Kimbap
Companion Object 역시 한 개의 클래스에서 단 한 번만 사용할 수 있다.
GitHub - KrillM/Kotlin_Again: init project
init project. Contribute to KrillM/Kotlin_Again development by creating an account on GitHub.
github.com
'코틀린' 카테고리의 다른 글
17. Null (0) | 2025.02.08 |
---|---|
16. 인터페이스 (0) | 2025.02.06 |
14. 추상 클래스, 데이터 클래스 (0) | 2025.02.05 |
13. 클래스 - 상속 (0) | 2025.01.29 |
12. 클래스 - 기본 (1) | 2025.01.29 |