! 이번 나도선배에서도 Object를 활용해 싱글톤 패턴을 활용해 후기를 작성한 사람인지 아닌지 구분하는 변수를 호출했었다.
해당 클래스에 한 개의 인스턴스만을 갖게하고 전역 범위내에서 인스턴스에 접근할 수 있도록 사용하는 패턴
싱글톤 패턴의 경우 디자인 패턴에 속하고 많이 사용하고 있는 패턴이다!
디자인 패턴이란 반복적으로 일어나는 문제에 대해서 어떻게 해결할 것인지에 대한 해결책이라고 생각하면 된다.
나중에 한번 GoF의 디자인 패턴 읽어 보면서 추가로 공부해봐야지!
싱글톤 패턴을 사용하는 이유는 프로그램 개발을 하면서 객체를 하나만 써야하는 경우가 존재한다.
또한 메모리 측면이나 데이터 공유에 있어서 좋기 때문이다.
액티비티나 프래그먼트 딴에서 인텐트 하거나 객체 생성시 번거롭기도 하고 비용이 발생하게 된다. 이를 해결해줄 수 있는 방식이 바로 싱글톤이다.
고정된 메모리 영역을 할당 받기 때문에 핞번의 생성자 호출로 인스턴스를 생성하며 그 외에는 메모리 안에 있는 인스턴스만을 호출하기 때문에 메모리 낭비를 막고 컨텍스트 스위칭 비용을 아낄 수 있다.
전역 인스턴스이기 때문에 이유에 말했 듯 데이터 공유가 쉽다.
멀티 쓰레드를 사용할 경우 동기화 문제도 잘 설계할 필요성이 있다.
코틀린의 경우 프로세스 시작시 바로 메모리에 올라가기 때문에 만약 클래스를 사용하지 않더라도 메모리 비용이 낭비된다.
object{
val isReviewed by lazy { "후기 작성 안함" }
}