자바에서 싱글톤(Singleton) 패턴을 구현하려면 private constructor, getInstance() 등 복잡한 보일러플레이트 코드를 작성해야 했습니다. 코틀린은 class 대신 object 키워드 단 하나로 이 모든 것을 끝냅니다.
또한 코틀린에는 자바의 static 키워드가 아예 삭제되었습니다. 대신 클래스 내부에 companion object(동반 객체)를 만들어, 객체지향의 원칙을 해치지 않으면서도 정적(Static) 멤버의 역할을 완벽하게 대체합니다.
object는 붕어빵 틀(클래스)이 아니라 '이미 만들어져 존재하는 단 하나의 거대한 붕어빵'입니다. 언제 어디서든 그 이름 자체로 부르면 됩니다.
companion object는 붕어빵 틀(클래스) 옆에 딱 붙어 있는 '매니저'입니다. 클래스의 인스턴스(붕어빵)가 없어도 매니저에게 상수나 팩토리 메서드를 요구할 수 있습니다.
| 키워드 | 의미와 용도 | 호출 방식 |
|---|---|---|
| object | 완벽한 싱글톤(Singleton) 객체 생성. 앱 전체에서 1개만 유지해야 하는 매니저급 기능에 사용. | Manager.doSomething() |
| companion object | 클래스 내부의 정적(Static) 멤버 공간. 팩토리 메서드나 클래스 공통 상수를 넣을 때 사용. | User.create() |