GamePrograming/내가본 GPG_One
-
State Patern ( 상태 패턴 )GamePrograming/내가본 GPG_One 2009. 11. 16. 17:19
상태패턴( State Pattern )은 'Object의 속성을 다른 객체에 위임한다' 라 되어 있으며, 구현 목적은 '다른 종류의 객체들이 공통 속성을 가지는 경우, 속성의 구현을 포함하는 객체에서 분리시킨다' 라고 되어 있습니다. 따라서 구현을 위해서는 속성을 가진 객체와 실제 속성을 구현하려는 객체가 필요합니다. 좀더 쉽게 말하면, A, B, C 라는 객체가 있는데, Move, Attack, Guard, Stop 등 공통되는 구현이 있다면, 이러한 액션을 취하는 속성들을 따로 분리해서, 구현한다는게 상태패턴의 목적입니다. #include #include #define SAFE_DELETE( p ) { if(p) { delete(p); p = NULL; } } #define NEXTLINE print..
-
Facade pettern ( 퍼사드 패턴 )GamePrograming/내가본 GPG_One 2009. 11. 16. 15:44
퍼사드 는? 클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체이다. 장 점 퍼사드는 소프트웨어 라이브러리를 쉽게 사용할 수 있게 해준다. 또한 퍼사드는 소프트웨어 라이브러리를 쉽게 이해할 수 있게 해 준다. 퍼사드는 공통적인 작업에 대해 간편한 메소드들을 제공해준다. 퍼사드는 라이브러리를 사용하는 코드들을 좀더 읽기 쉽게 해준다. 퍼사드는 라이브러리 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜준다. 대부분의 바깥쪽의 코드가 퍼사드를 이용하기 때문에 시스템을 개발하는 데 있어 유연성이 향상된다. 퍼사드는 좋게 작성되지 않은 API의 집합을 하나의 좋게 작성된 API로 감싸준다. 즉 , 자주 사용 되는 일련의 행동을 집합으로 묶어서..
-
Singleton ( 싱글톤 )GamePrograming/내가본 GPG_One 2009. 11. 16. 15:28
template class Singleton { private: static T* pIncetance; protected: Singleton(); ~Singleton(); public: static T* GetInstance() { if(pIncetance == NULL) { pIncetance = new T(); } return pIncetance; } void Release() { if(pIncetance != NULL) delete pIncetance; } }; template T* Singleton::pIncetance = NULL; template Singleton ::Singleton() { Singleton ::pIncetance= NULL; }; template Singleton ::~Si..
-
단일체 패턴 (Singleton) - JAVA 예제GamePrograming/내가본 GPG_One 2009. 11. 16. 14:51
1) EagerSingleton static class EagerSingleton extends Singleton { static final EagerSingleton theInstance = new EagerSingleton(); static EagerSingleton getInstance() { return theInstance; } } 이 경우는 미리 싱글톤 인스턴스를 생성하는 방법으로 static final 필드에 인스턴스를 생성하여 할당하는 방법입니다. 이 필드는 클래스로더에 의해서 EagerSingleton이 메모리로 올라오는 순간에 안전하게(thread-safe하게)초기화 됩니다. 이 방법이 아마 성능이 가장 우수하게 나타날 것입니다. 장점은 동기화부담이 적다는 것입니다. 단 한번 클래스..