싱글턴 패턴에서 자기 자신을 포인터로 가지도록 구현하는 방법도 있고, 일반 변수로 사용하는 경우가 있던데 어떤 차이가 있을까? 궁금했다.
포인터를 사용하는 경우
- 지연 초기화(Lazy Initialization) 가능: 포인터를 사용하면 객체의 인스턴스가 실제로 필요할 때까지 생성을 지연시킬 수 있습니다. 즉, getInstance() 메소드가 처음 호출될 때 싱글턴 객체를 생성합니다. 이는 자원을 효율적으로 사용하게 하며, 초기 시작 시간을 단축시킬 수 있습니다.
- 명시적인 생성자 호출: 포인터를 사용하면 객체의 생성자를 명시적으로 호출할 수 있어, 생성 과정에서 추가 로직을 수행할 수 있습니다.
- 생명 주기 관리 용이: 프로그램의 어느 시점에서든 객체를 명시적으로 삭제하거나 재생성하는 등 생명 주기를 관리하기가 용이합니다.
일반 변수로 사용하는 경우
- 자동 초기화: 프로그램 시작 시 정적 변수의 생성자가 자동으로 호출되므로, 객체가 프로그램 시작과 동시에 초기화됩니다. 이는 지연 초기화를 할 수 없게 만듭니다.
- 소멸자 호출의 자동화: 일반 정적 변수의 경우, 프로그램 종료 시 자동으로 소멸자가 호출됩니다. 이는 소멸 과정을 제어하기 어렵게 만들 수 있습니다.
결론
싱글턴 패턴에서 자기 자신을 포인터로 가지는 방식은 객체의 생성과 소멸 시점을 프로그래머가 더 잘 제어할 수 있게 해줍니다. 지연 초기화를 가능하게 하여 필요할 때 객체를 생성하고, 필요에 따라 객체의 생명 주기를 관리할 수 있는 유연성을 제공합니다. 반면, 일반 변수로 싱글턴 인스턴스를 관리할 경우 이러한 유연성이 제한됩니다. 따라서 싱글턴 패턴의 사용 목적과 요구 사항에 맞게 적절한 방식을 선택해야 합니다.
'프로젝트 > 주식 시장 분석 도구' 카테고리의 다른 글
study - vcpkg (0) | 2024.03.27 |
---|---|
Study - 싱글턴 패턴, Singleton Pattern (0) | 2024.03.27 |
설계 - 데이터 수집 모듈 (0) | 2024.03.24 |
요구 사항 분석 및 개발 모듈 (0) | 2024.03.24 |