Kotlin 문법 및 연습 문제

Kotlin - object를 이용한 싱글톤 객체 생성

돗개진 2024. 3. 13. 20:20

[ 싱글톤 객체 ]

- 애플리케이션 전역에서 하나의 인스턴스만 생성되는 객체를 말하며 클래스의 인스턴스를 여러 번 생성하지 않고 한 번만 생성하여 공유함으로써 자원의 낭비를 줄이고 일관된 상태를 유지할 수 있도록 한다.

 

- Kotlin에서 싱글톤 객체는 'object' 키워드를 사용하여 정의되며 클래스 선언과 객체의 생성을 동시에 수행하며 싱글톤 객체는 클래스 내부의 프로퍼티 및 메서드를 정의할 수 있다.

 

object ShoppingCart {
    private val items = mutableListOf<MenuItem>()
    private var userMoney = 0 // 사용자 잔액

    fun initMoney(money: Int) {
        userMoney = money
    }

    fun addItem(item: MenuItem) {
        // 아이템 추가 로직
    }

    fun displayItems() {
        // 장바구니 표시 로직
    }

    fun doOrder() {
        // 주문 처리 로직
    }
}

ㄴ> 위 코드는 키오스크 프로그램을 설계하는 과제를 수행하면서 사용한 ShoppingCart(장바구니) 객체이다. 장바구니에 담긴 상품이 누적되지 않고 하나로만 초기화 되는 현상 때문에 사용하게 되었다.

 

싱글톤 객체로 생성된 ShoppingCart 애플리케이션 어디에서나 ShoppingCart 로 접근이 가능하며 장바구니에 아이템을 추가하고 주문을 처리할 수 있다.

 


 

[ 싱글톤 객체가 유용하게 사용되는 상황 ]

  • 공유 리소스에 대한 중앙 집중적인 접근 : 여러 곳에서 공유되는 리소스에 대한 중앙 집중적인 접근 제공 시 유용
  • 유일한 자원 접근 : 자원을 전역적으로 사용해야 하지만 인스턴스화된 객체가 여러 개 존재하지 않아야 할 때 유용
  • 인스턴스 생성 비용이 높은 경우 : 인스턴스 생성 비용이 높거나 인스턴스를 여러 번 생성할 필요가 없는 경우에 유용