▶ 디자인 패턴
▷ 장점
의사 소통 간결화로 효율 증가 (작업 속도 증가)
평준화 되고 안정적인 코드 동작성
프로그래밍을 작성하는데 있어 디자인 타임에서의 다양한 상황에 대한 가이드 및 방향성 제시
▷ 단점
디자인 패턴은 코드를 설계하고 작성하는 하나의 방법일 뿐 모든 해결의 방법은 아님
대부분 디자인 패턴은 원본 부분과 활용 부분이 나뉘어져 있기 때문에 코드 간결화를 생각한다면 고민이 필요
디자인 패턴의 수문장 ( 효율이 좋다.)
프로젝트 전체에서 한개만 존재해야 하는 객체나 클래스, 또는 프로젝트 전체에서 공유하는 클래스에 적용할 수 있는 패턴
▷ 장점
▷ 단점
싱글톤은 대부분 전역변수로 처리하는 경우가 많기 때문에 코드에 대해 알아보기가 어려워지는 상황이 생길 수 있다.
싱글톤 인스턴스에 너무 많은 데이터가 공유된다면 결합도가 높아져 유지보수가 힘들다.
template<class T>
class SingletonBase
{
protected:
static T* singleton; // 싱글톤 인스턴스 선언
Singleton(){}
~Singleton(){}
public:
static T* getSingleton(void); // 싱글톤 가져오기
void releaseSingleton(void); // 싱글톤 메모리에서 해제
}
// 싱글톤 초기화
template<typename T>
T* SingletonBase<T>::singleton = 0;
// 싱글톤 가져오기
template<typename T>
T* SingletonBase<T>::getSingleton(void)
{
// 싱글톤이 없다면 새로 생성
if(!singleton) singleton = new T;
return singleton;
}
// 싱글톤 메모리에서 해제
template<typename T>
void SingletonBase<T>::releaseSingleton(void)
{
// 싱글톤이 있다면 메모리에서 해제
if(singleton)
{
delete singleton;
singleton = 0;
}
}
디자인패턴에 대해 공부를 해보면서 아직 template 함수에 익숙하지 않아 많이 미숙한 면이 있다.
보다 더 자세하고 코드를 읽어나갈 능력을 키우기 위해 template에 대한 공부를 더 해 보자.