[Kotlin] Object 싱글톤

곽호택·2022년 3월 17일
0

코틀린

목록 보기
5/6
post-thumbnail
post-custom-banner

! 이번 나도선배에서도 Object를 활용해 싱글톤 패턴을 활용해 후기를 작성한 사람인지 아닌지 구분하는 변수를 호출했었다.

1. 싱글톤패턴

해당 클래스에 한 개의 인스턴스만을 갖게하고 전역 범위내에서 인스턴스에 접근할 수 있도록 사용하는 패턴

싱글톤 패턴의 경우 디자인 패턴에 속하고 많이 사용하고 있는 패턴이다!

디자인 패턴이란 반복적으로 일어나는 문제에 대해서 어떻게 해결할 것인지에 대한 해결책이라고 생각하면 된다.

나중에 한번 GoF의 디자인 패턴 읽어 보면서 추가로 공부해봐야지!

1) 사용 이유

싱글톤 패턴을 사용하는 이유는 프로그램 개발을 하면서 객체를 하나만 써야하는 경우가 존재한다.

  • 어플리케이션 사용자 설정, 로그 기록, 대화 상자 및 리소스 관리 객체 등

또한 메모리 측면이나 데이터 공유에 있어서 좋기 때문이다.

액티비티나 프래그먼트 딴에서 인텐트 하거나 객체 생성시 번거롭기도 하고 비용이 발생하게 된다. 이를 해결해줄 수 있는 방식이 바로 싱글톤이다.

2) 장점

  • 고정된 메모리 영역을 할당 받기 때문에 핞번의 생성자 호출로 인스턴스를 생성하며 그 외에는 메모리 안에 있는 인스턴스만을 호출하기 때문에 메모리 낭비를 막고 컨텍스트 스위칭 비용을 아낄 수 있다.

  • 전역 인스턴스이기 때문에 이유에 말했 듯 데이터 공유가 쉽다.

3) 단점

  • 여러 클래스들이 공유하게 될 경우 결합도가 높아지게 되고, 객체지향 원칙인 개방-폐쇄 원칙을 위배하기 때문에 객체지향적인 싱글톤 설계가 필요하다
  • 멀티 쓰레드를 사용할 경우 동기화 문제도 잘 설계할 필요성이 있다.

  • 코틀린의 경우 프로세스 시작시 바로 메모리에 올라가기 때문에 만약 클래스를 사용하지 않더라도 메모리 비용이 낭비된다.

4) 해결책

  • 이를 해결하기 위해 by lazy를 통해 내부 변수들의 초기화 시점을 조정한다. 호출될 때 메모리에 올라갈 수 있도록!!

5) 예시

  • 코틀린에서 사용할 때는 Object 키워드를 이용한다.
object{

    val isReviewed by lazy { "후기 작성 안함" }
    
 }
profile
잘하고싶다
post-custom-banner

0개의 댓글