1. 싱글톤 패턴 (Singleton Pattern)
가장 많이 사용한 패턴이다. 주로 키 입력 매니저, 타임 매니저 등 하나만 있으면 되는 매니저 클래스를 만들 때 사용했다. 예를 들어 싱글톤으로 사운드 매니저를 만든 경우, 플레이어나 몬스터 등의 클래스에서 효과음이 필요할 때 마다 사운드 매니저로부터 인스턴스를 얻어와 소리를 재생하는 방식을 썼다.
장점 : 편한 글로벌 액세스 제공, 단일 인스턴스 보장, 처음 액세스 시 생성되므로 객체 생성 시간이 적음
단점 : 개방 - 폐쇄 원칙에 어긋남, 높은 결합도를 가짐, 멀티 쓰레드 환경에서 동기화 처리를 하지 않으면 인스턴스가 두 개 이상 만들어질 가능성이 있음
2. 추상 팩토리 패턴 (Abstract Factory Pattern)
API 배울 때 다양한 bullet 클래스를 만들면서 사용해봤다. bullet의 종류가 여러가지인 경우(일반, 유도탄, 회전 등) 추상 팩토리 클래스에서 객체 생성의 책임을 맡았다.
장점 : 인스턴스 생성을 서브 클래스에게 위임하므로 의존성을 낮춤, 쉽게 다른 객체로 대체할 수 있음
단점 : 추상 팩토리에서 코드 수정 시 모든 서브 클래스의 코드 역시 변경해야함
3. 옵저버 패턴
DirectX 3D 배울 때 카메라 클래스에서 회전 또는 이동을 할 때 월드에 구현된 오브젝트들에게 그 정보를 전달하기 위해 사용한 패턴이다.
장점 : observer와 subject 간의 결합도가 낮음, observer가 subject에게 자기 자신을 등록하거나 삭제하는 것이 자유로움
단점 : 동일한 변경 작업이 서로 다른 observer 객체에 의해 반복 수행될 수 있음
4. 컴포넌트 패턴
DirectX 3D 배울 때 버퍼, 리소스 등을 컴포넌트로 만들어서 개체 클래스에서 컴포넌트를 추가하게 만들었다. 유니티에서 게임을 만들 때도 컴포넌트 패턴을 사용한다.
장점 : 상속을 사용하는 경우에 비해 크기를 줄일 수 있음, 느슨한 구조(디커플링)로 개체 클래스에서는 필요한 컴포넌트만 사용할 수 있음
단점 : 동일한 변경 작업이 서로 다른 observer 객체에 의해 반복 수행될 수 있음, 컴포넌트끼리 통신이 필요한 경우 강한 결합성을 가지게 되거나 메시지 정보 형태에 한계를 가질 수 있음
5. 브릿지 패턴
MFC 툴 배울 때 쯤 배웠지만 실제로 개발할 때 활용해본 적은 없다..
장점 : 기능과 구현을 분리할 수 있음, 다른 개체에서도 해당 기능을 사용할 수 있음
단점 : 디자인이 복잡함
'C++' 카테고리의 다른 글
렌더링 파이프라인 (0) | 2020.02.17 |
---|---|
더블 버퍼링과 스왑 체인 (0) | 2020.02.17 |
정적 바인딩, 동적 바인딩, 가상 함수 테이블 (0) | 2020.02.16 |
BFS 구현 (큐) (0) | 2020.02.16 |
DFS 구현 (재귀, 스택) (0) | 2020.02.16 |