-
객체 생성 : 싱글턴 패턴 ( Singleton Pattern )Programming/패턴 2020. 5. 4. 22:59
GOF 디자인 패턴을 참고합니다.
객체를 생성하는 방법들 중에 하나인 싱글턴 패턴.
정의
- 오직 한 개의 클래스 인스턴스만 갖도록 보장하며, 전역적인 접근점을 제공한다고 한다.
사용 이유
- 어떠한 클래스는 하나의 인스턴스만을 갖도록 하는 것이 좋은 것이 있다.
- 예를 들어, 많은 프린트가 있다해도 스풀은 하나여만 하고, 윈도우 관리자도 오직 하나, 한 회사에서 하나의 회계 시스템만 운영.
활용성
- 유일한 객체가 부모 클래스에서 자식 클래스로 확장되어야 하고, 코드 수정없이 자식 클래스의 인스턴스를 사용할 수 있어야 할 때 사용.
구조
코드
// .h class Singleton { public: static Singleton* Instance(); // 다른 인터페이스는 이곳에 작성을 합니다. void showMessage(); static void Destroy(); protected: Singleton() { cout << "Singleton construct." << endl; }; ~Singleton() { cout << "Singleton destruct." << endl; }; private: static Singleton* _instance; }; // .cpp Singleton* Singleton::_instance = 0; Singleton* Singleton::Instance() { if(_instance == 0) { _instance = new Singleton; cout << "새로운 인스턴스 생성." << endl; // 새로운 인스턴스 생성. } // else if ( 조건 ) { // 다른 가능한 서브클래스는 이곳에 작성을 합니다. // } return _instance; } void Singleton::Destroy() { cout << "싱글톤 해제." << endl; delete _instance; } void Singleton::showMessage() { cout<< "싱글톤 구현." << endl; } int main(int argc, const char * argv[]) { Singleton* Singleton = Singleton::Instance(); Singleton->showMessage(); Singleton->Destry(); return 0; }
결과
Singleton construct. 새로운 인스턴스 생성. 싱글톤 구현. 싱글톤 해제. Singleton destruct.
반응형'Programming > 패턴' 카테고리의 다른 글
객체 생성 : 프로토타입 패턴 ( Prototype Pattern ) (0) 2020.09.26 UML 관계 종류 (0) 2020.09.22 객체 생성 : 빌더 패턴 ( Builder Pattern ) (0) 2020.09.22 객체 생성 : 추상 팩토리 패턴 ( Abstract Factory Pattern ) (0) 2020.09.04 객체 행동 : 전략 패턴 ( Strategy Pattern ) - 정책(Policy) (0) 2020.05.04