Singleton Pattern


오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다.

객체지향 언어를 접하다 보면 Singleton Pattern을 자주 들어 봤을 것이다. 특정 클래스의 인스턴스(즉, 객체)가 단 하나만 존재하도록 보장하는 디자인 패턴이다.

그렇다면 이런 Singleton Pattern이 어떨 때 유용하게 쓰일까?

가장 간단한 예시는 프린터이다. 여러 컴퓨터에서 프린터 한 대를 공유하는 경우, 한 대의 컴퓨터에서 프린트하고 있을 때 다른 컴퓨터가 프린트 명령을 내려도 현재 프린트하는 작업을 마치고 그다음 프린트를 해야지 두 작업이 섞여 나오면 문제가 될 것이다.

즉, 여러 클라이언트(컴퓨터)가 동일 객체(공유 프린터)를 사용하지만 한 개의 객체(프린트 명령을 받은 출력물)가 유일하도록 상위 객체가 보장하지 못한다면 singleton 패턴을 적용해야 한다. 이처럼 동일한 자원이나 데이터를 처리하는 객체가 불필요하게 여러 개 만들어질 필요가 없는 경우에 주로 사용한다.

Singleton with C...?


C언어에는 클래스, 객체의 개념이 없다. 하지만 Singletion Pattern을 적용한 구조는 만들 수 있다. 어떻게 하면 만들 수 있을까?