[모던C++디자인패턴] 5. 싱글턴

짜장범벅·2022년 6월 4일
0

모던CPP디자인패턴

목록 보기
4/4

싱글턴 패턴은 특정 컴포넌트에서 객체가 애플리케이션 전체에서 단 하나만 존재해야 하는 상황을 처리하기 위해 고안

5.1 전역 객체로서의 싱글턴

위 문제에서의 가장 쉬운 방법은 객체를 한 번만 객체화하도록 개발자들간에 약속하는 것이다. 다만, 개발자 간의 약속이 지켜지지 않거나 원치 않은 생성자 호출이 발생할 수 있다.

만약 객체를 static 전역 객체를 둔다면 원치 않은 상황은 예방할 수 있지만, 전역 객체는 컴파일 순서가 명시되어 있지 않다. 즉, A 객체에서 최초로 객체화를 시작했으며, 객체화가 끝나기 전에 B 객체에서 호출하는 등의 문제가 발생할 수 있다. 또한 복잡한 코드의 경우에 전역 객체를 찾는 것은 복잡하다.

사용자가 알기 쉽도록, 필요한 객체를 리턴하는 전역 함수를 아래와 같이 제공할 수 있다.

Database& get_database(){
    static DataBase database;
    return database;
}

위의 방식은 스레드 안정성(MT-Safe, 참고)이 C++11 이상 버전에서만 보증된다.

profile
큰일날 사람

0개의 댓글