본문 바로가기

공부/C++

오늘의 공부 단일체(Singleton) 싱글턴[싱글톤]


싱글톤[싱글턴]

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

활용성 : 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근접 으로 모든 사용자가

            접근할 수 있도록 해야 할 때,

유일한 인스턴스가 서브 클래싱으로 확장되어야 하며, 사용자는 코드의 수정 없이 확장된
 
서브클래스의 인스턴스를 사용할 수 있어야 할 때.

결과 : 

1. 유일하게 존재하는 인스턴스로의 접근을 통제

2. 이름 공간을 좁힘.

3. 연산 및 표현의 정제를 허용.

4. 인스턴스의 개수를 변경하기가 자유로움. 

5. 클래스 연산을 사용하는 것보다 훨씬 유연한 방법임.




본인이 이해한 방법 : 다른 코드를 본다 -> 대체 무슨 용돈지 존나 열심히 본다 -> 알아낸다.

참 쉽죠. 솔까말 저리 말해줘도 그냥 짜여있는 코드 보고 연관성 유추해서 깨닫는게 전 이해하기가  더 빠른 것 같습니다. 퍽썩




---- 싱글턴 코드 [ 코드 출처 : http://harmonize84.tistory.com/12 ] ----


다른 완성되어있는 코드를 본 바로 내 나름의 이해를 하자면...

어떠한 다른 클래스에서 사용된 함수를 또다른 함수에서 사용하기 전에 싱글턴을 사용하여 옵션을? 

정해주면 에러 없이 잘 가져다 사용할 수 있다는 것.

이 싱글턴 은 cpp에서 는 참조하지 않으며 오직 헤더에서 헤더로만 참조된다.

또한 싱글턴은 cpp파일을 가지지 않는다. 즉 위에 있는 코드가 싱글턴 전부.[물론 싱글턴은 꼭 저렇게만 짜야하는건 아니다.]





막간 단어.

인스턴스 [ instance ]

①일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 객체 지향 프로그래밍(OOP)에서,
 어떤 등급에 속하는 각 객체를 인스턴스라고 한다. 예를 들면 ‘목록(list)’이라는 등급을
 정의하고 그 다음에 ‘본인 목록(my list)’이라는 객체를 생성(기억 장치 할당)하면 그 등급의
 인스턴스가 생성된다. 또한 변수가 포함되어 있는 어떤 논리식의 변수에 구체적인 값을 대입하여
 식을 만들면 원래 식의 인스턴스가 만들어진다. 이런 의미에서 인스턴스를 실현치라고 한다. 

출처 : 한국 정보 통신 기술 협회