2015년 11월 28일 토요일

Singleton Pattern (싱글톤 패턴)

의도
  • 클래스의 인스턴스가 하나만 생성이 되게 보장하며, 전역으로 설정이 되어 어디서든 접근이 가능하도록 제공하는 패턴
이럴 때 사용하자.
  • 클래스의 인스턴스가 하나여야 하고, 모든 사용자가 접근할 수 있도록 해야 할 때
장점은?
  • 인스턴스의 접근을 제어할 수 있다.
  • 전역 변수를 정의하여 발생하는 디버깅의 어려움 등 문제를 없앨 수 있다.
  • 인스턴스 개수 변경이 자유롭다.
코드
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

댓글 없음:

댓글 쓰기

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.