[Kotlin Design Class] Singleton

1

Kotlin Design Class

목록 보기
1/4
post-thumbnail

오늘 배울것은 SingleTon입니다.

일반적으로 싱글톤은 부분적으로 정해져있습니다.

  • Network Manager(Retrofit)
  • DataBase Access
  • Loging
  • Utility Class

그외의 몇몇입니다.

전역상태로 관리하는 객체중, 동일한 인스턴스를 사용해도 문제가 되지않을때가 있습니다.(계속 인스턴스를 생성하면 메모리 낭비겠죠!)
전형적으로 Network나, DataBase같은 인스턴스 또한 계속 메모리에 올리기엔 무겁습니다.

그림으로 확인해볼까요?

싱글톤을 적용하지 않았을때

싱글톤을 적용했을때

싱글톤을 적용했을때, 모든 클래스가 하나의 인스턴스만 바라보게 됩니다.

싱글톤을 썼을때의 단점

어떤 단점이 있을까요?

  1. 멀티스레드 환경에서 문제가 발생할 수 있다.
    여러 스레드가 동시에 접근할때, race Condition이 발생할 확률이 높습니다.
    이를 위해 더블체킹 락 패턴같은게 나왔죠.
  1. 테스트가 어렵다.
    어디서든지 수정할 수 있는 Singleton 클래스이기 때문에 어떤 함수가 의존할때, 해당함수를 테스트하기가 어려워집니다.
    싱글톤의 상태가 해당 함수에 영향을 미치기 때문입니다.
    때문에 의도치않게 작동을 실패할 수도 있습니다.

Object vs Companion Object

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글