싱글턴 패턴은 특정 컴포넌트에서 객체가 애플리케이션 전체에서 단 하나만 존재해야 하는 상황을 처리하기 위해 고안
위 문제에서의 가장 쉬운 방법은 객체를 한 번만 객체화하도록 개발자들간에 약속하는 것이다. 다만, 개발자 간의 약속이 지켜지지 않거나 원치 않은 생성자 호출이 발생할 수 있다.
만약 객체를 static 전역 객체를 둔다면 원치 않은 상황은 예방할 수 있지만, 전역 객체는 컴파일 순서가 명시되어 있지 않다. 즉, A
객체에서 최초로 객체화를 시작했으며, 객체화가 끝나기 전에 B
객체에서 호출하는 등의 문제가 발생할 수 있다. 또한 복잡한 코드의 경우에 전역 객체를 찾는 것은 복잡하다.
사용자가 알기 쉽도록, 필요한 객체를 리턴하는 전역 함수를 아래와 같이 제공할 수 있다.
Database& get_database(){
static DataBase database;
return database;
}