- 클래스의 인스턴스가 하나만 생성이 되게 보장하며, 전역으로 설정이 되어 어디서든 접근이 가능하도록 제공하는 패턴
- 클래스의 인스턴스가 하나여야 하고, 모든 사용자가 접근할 수 있도록 해야 할 때
- 인스턴스의 접근을 제어할 수 있다.
- 전역 변수를 정의하여 발생하는 디버깅의 어려움 등 문제를 없앨 수 있다.
- 인스턴스 개수 변경이 자유롭다.
CEarth 클래스 (Singleton)
class CEarth { public: static CEarth* GetInstance() { if (pEarth == NULL) pEarth = new CEarth(); return pEarth; }; private: CEarth() {}; private: static CEarth* pEarth; };
실행부분
CEarth* CEarth::pEarth = NULL; void main() { CEarth* pEarth1 = CEarth::GetInstance(); CEarth* pEarth2 = CEarth::GetInstance(); if (pEarth1 == pEarth2) cout << "The 'pEarth1' is equal to The 'pEarth2'." << endl; else cout << "The 'pEarth1' isn't equal to The 'pEarth2'." << endl; }
UML - class 다이어그램
참고
- GoF의 디자인 패턴(개정판) 재사용성을 지닌 객체지향 소프트웨어의 핵심요소
- http://blog.naver.com/icarus_buk/220390625010
댓글 없음:
댓글 쓰기
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.