[C++] 간단한 디자인패턴

2022. 1. 7. 03:47C&C++

1. 싱글톤

프로그램 내에서 유일하게 하나만 존재해야 하는 클래스에 적용한다.

일반 전역 객체는 하나만 만들게 제한되지 않고, 객체를 사용하기 전에도 프로세스 가동 시점에 생성이 되는데,

싱글톤 객체를 통해서 이를 해결할 수 있다.

 

구현 방법

1) GetInstance 라는 public 함수에 static 지역변수를 두는 방법.

- 지역 static으로 인한 성능 저하

2) 클래스 멤버 변수에 static 변수로 자기 자신을 두는 방법

- 프로세스 가동 시점에 생성이 됨. (참고로 static 멤버 변수의 경우 cpp에서 따로 선언을 해줘야 한다.)

3) GetInstance 에서 동적할당을 하는 방법. (NULL 플래그로)

- 멀티쓰레드에서 락을 걸어야 한다는 점. (NULL이 아닌 상태에서 동시에 들어오는 것 방지) 

4) 템플릿 싱글톤 클래스를 만들어서 상속받아서 쓰는 방법. (비추)

 

2. 옵저버

한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다.

 

3. 커맨드

Command 클래스를 순수 가상함수 클래스로 만들고,

기능을 하는 Command의 유도 클래스를 인자로 전달.

메시지를 수신하는 클래스의 메시지 큐에 등록한다.

Update시 이 큐에서 Dequeue해서 run.

'C&C++' 카테고리의 다른 글

[C&C++] const 키워드  (0) 2023.04.25
[C/C++] 소켓 API  (0) 2023.04.06
[C++] 템플릿  (0) 2022.01.07
[C++] 형 변환 연산  (0) 2022.01.07
C++ 정리  (0) 2022.01.06