디자인 패턴

[디자인 패턴] #7_이중 버퍼, Double Buffer 게임 디자인 패턴 중 "이중 버퍼 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 8 항목, "이중 버퍼"에 해당하는 내용입니다. 이중 버퍼 1. 개념 * 이중 버퍼 패턴? : 어떠한 클래스는 변경이 가능한 상태를 캡슐화합니다. 해당 상태는 지속적으로 변경되지만, 외부에서 볼 때 한 번에 변경되는 것처럼 보이게 하고 싶습니다. 따라서, 해당 클래스를 "현재" 상태와 "다음" 상태를 갖도록 합니다! 이때, "현재" 상태는 항상 "읽기" 전용이며, "다음" 상태는 항상 "쓰기" 혹은 "변경"에 사용됩니다! 2. 그렇다면, 언제? 1. 순차적으로 변경해야 하는 상태가 있을 때 2. 변경 도중에도 접근 할 수 있는 상태가 있을 때 3. 외부에서..
[디자인 패턴] #6_상태 패턴, State Pattern 게임 디자인 패턴 중 "상태 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 7 항목, "상태"에 해당하는 내용입니다. 유한 상태 기계(FSM) 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것처럼 보입니다. 1. FSM, 유한 상태 기계 유한 상태 기계는 입력, 상태, 그리고 전이 (Transition)로 구성된 수학적 모델입니다. FSM = 입력 + 상태 + 전이 주요 포인트는 아래와 같습니다. 1. 가질 수 있는 "상태"가 한정적입니다. 2. 한 번에 한 가지 "상태"만 허용됩니다. 예를 들면, 서 있는 동시에 점프할 수 없습니다! 3. "입력" 혹은 "이..
[디자인 패턴] #5_싱글턴 패턴, Singleton Pattern 게임 디자인 패턴 중 "싱글턴 패턴(Singleton Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 6 항목, "싱글턴"에 해당하는 내용입니다. 싱글턴 패턴 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다. - GoF의 디자인 패턴 81pg "싱글턴 패턴"은 오직 한 개의 클래스 인스턴스만이 존재하도록 보장하고, 이에 대한 전역적인 접근을 허용하는 디자인 패턴입니다. 자세한 내용을 살펴보도록 합시다! 1. 오직 한 개의 인스턴스만 갖도록 보장 먼저, "싱글톤 패턴"의 두 가지 특징 중 첫 번째 특징을 살펴보겠습니다. "오직 한 개의 클래스 인스턴스만을 보장" 하는 "싱글턴 패..
[디자인 패턴] #4_프로토타입 패턴, Prototype Pattern 게임 디자인 패턴 중 "프로토타입 패턴(Prototype Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 5 항목, "프로토타입"에 해당하는 내용입니다. 프로토타입 패턴 원형(Prototype)이 되는 인스턴스를 사용해서 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다. - GoF의 디자인 패턴 - "프로토타입 패턴"은 원형이되는 인스턴스를 하나 만들어 새롭게 생성할 객체들의 프로토타입으로 사용하는 디자인 패턴을 말합니다. 역시 이해를 위해 예제를 살펴보겠습니다. Monster + Sapwner, 몬스터와 스포터 class Monster { //... }; 1. Ghost 몬스터 cl..
[디자인 패턴] #3_관찰자 패턴, Observer Pattern 게임 디자인 패턴 중 "관찰자 패턴(Observer Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 4 항목, "관찰자"에 해당하는 내용입니다. 관찰자 패턴, Observer 일대 다의 의존관계를 갖는 객체들이 어떠한 객체의 상태 변화를 그 객체와 의존성을 가진 다른 객체들이 그 변화를 "통지"받고 자동으로 업데이트할 수 있도록 합니다. 관찰자 패턴은 말 그대로 어떠한 객체의 상태 변화를 의존성을 갖는 다른 객체들에게, 혹은 관찰자들에게 그 변화를 통지하고 처리할 수 있게끔 하는 디자인 패턴입니다. 관찰자 패턴의 주요 포인트는 "피 관찰자"가 변화를 감지해 "관찰자"에게 그 변화들을 통지하는 객체들간의 관계 구조입니다...
[디자인 패턴] #2_경량 패턴, Flyweight Pattern 게임 디자인 패턴 중 "명령 패턴(Command Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 3 항목, "경량"에 해당하는 내용입니다. 경량 패턴 먼저, 경량 패턴이란 "공유"를 통해 다수의 "소립" 객체들을 효과적으로 지원하는 기법입니다. 경량 패턴의 요지는 "공유"입니다. 다수의 객체 인스턴스들이 공유하는 데이터 값을 한 데 모으고, 이러한 데이터들을 "고유 상태"라고 합니다. 그리고, 각 인스턴스들마다 다른 값을 갖는 나머지 데이터들을 "외부 상태"라고 구분하겠습니다. 경량 패턴은 다수의 인스턴스들이 공유하는 데이터들이 공통적으로 갖는 "고유 상태"를 공유하도록 만들어 효과적으로 메모리 사용량을 줄이도록 합니다..
[디자인 패턴] #1_명령 패턴, Command pattern 게임 디자인 패턴 중 "명령 패턴(Command Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 2 항목, "명령"에 해당하는 내용입니다. 커맨드 패턴, 명령 패턴, Command Pattern "명령 패턴"은 메서드 호출을 실체화한 것입니다. 이때, "실체화"는 실제 하는 것으로, 즉 어떤 개념을 객체화하는 것을 의미합니다. 이해하기 상당히 어렵죠... 예제를 통해 살펴보겠습니다. 입력키 변경, 특정 동작 실행 void InputHandler::handleInput() { if(isPressed(Button_Q)) ThrowFire(); else if(isPressed(Button_W)) MakeShield(); else..
[Effective C++] #35 Public 가상 함수의 대안, NVI, 전략 패턴 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 35 "가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자"에 해당하는 내용입니다. 가상 함수 class someClass { public: virtual int virtualFunc() const; ... }; 가상 함수의 선언은 파생 클래스로 하여금 인터페이스와 기본 구현을 제공받도록 하고, 각 파생 클래스의 필요에 의해 재정의 할 수 있도록 해줍니다. 멤버 함수들의 인터페이스 상속과 구현 상속 관련 내용은 링크를 참..
Hardii2
'디자인 패턴' 태그의 글 목록 (2 Page)