1. Singleton
In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to a singular instance.
소프트웨어 공학에서, 싱글톤 패턴이란 한 클래스의 인스턴스화를 단 하나의 인스턴스로 규제하는 소프트웨어 디자인 패턴이다.
위는 싱글톤 디자인 패턴의 위키피디아 정의이다. 쉽게 말해, 하나의 클래스는 하나의 인스턴스만 가져야 하는 것이 싱글톤 패턴이라는 거다.
2. Java Static
그럼 우리 이번에는 위 관점에서, 아래 코드를 보고 Java 의 Static 키워드는 과연 Singleton 패턴에 부합하는지 생각해보자.
class Example{
static int count = 0;
int count2 = 0;
static Example createExample();
void updateExample();
}
위 코드에서 static 으로 선언된 Attribute 와 Method 는 Static 메모리에 들어가, 다른 Example 인스턴스가 생성되어도 값을 유지할 것이다.
그런데 이상하다.. Singleton은 분명 한 Class가 하나의 Instance를 갖는 것이라 했다.
그렇다면, static count 와 static Example createExample() 은 원래 감싸고 있는 Example Class와 Friend 관계로 소통하는(private 등에 접근할 수 있는) 독립된 Class 로 간주해도 무방하지 않은가?
정말 Java 의 Static 키워드는 Singleton 패턴을 충실히 이행했다고 볼 수 있을까??
3. Kotlin Object
여기서 등장하는 것이 바로 Kotlin 의 Object를 활용한 Singleton 디자인 패턴이다.
Object expressions create objects of anonymous classes
Object 표현들은 익명 클래스의 객체들을 만든다.
공식 문서의 위 한줄 설명에 모든 것이 담겨있다. Kotlin 은 Java Static과 같이 싱글톤 패턴을 해치는 것을 막기위해, object라는 독자적인 Singleton 패턴을 구축한 것이다.
간단한 용법은 위와 같은데, 본 글에서는 왜 object라는 것이 나왔는지만 설명하는 글이기에, 이만 줄이도록 하겠다!
'코틀린 언어' 카테고리의 다른 글
[Kotlin] Property 토막글 (Spring boot Setter에 관한 고찰) (0) | 2024.05.17 |
---|---|
[Kotlin] Any 타입과 MutableList (0) | 2024.04.24 |
[Kotlin] 각종 배열 및 리스트 Collection, List, Set, Map, Deque 개념정리 (0) | 2024.04.24 |