집 >백엔드 개발 >C#.Net 튜토리얼 >C++ 디자인 패턴의 상태 패턴에 대한 간략한 소개
상태 모드(State): 객체의 내부 상태가 변경되면 객체의 동작을 변경할 수 있습니다.
상태 패턴은 주로 객체의 상태 전환을 제어하는 조건식이 너무 복잡한 상황을 해결합니다. 상태 판단 논리를 다양한 상태를 나타내는 일련의 클래스로 이전함으로써 복잡한 판단을 논리화할 수 있습니다.
패턴 구현:
[code]class Context; class State{ public: virtual void Handle(Context *pContext) = 0; }; class ConcreteStateA: public State{ public: virtual void Handle(Context *pContext){ std::cout << "I'm concretestateA.\n"; } }; class ConcreteStateB: public State{ public: virtual void Handle(Context *pContext){ std::cout << "I'm concretestateB.\n"; } }; class Context{ public: Context(State *state):pState(state){} void Request(){ if(pState){ pState->Handle(this); } } void ChangeState(State *pstate){ pState = pstate; } private: State *pState; };
클라이언트
[code]int main(){ State *pState = new ConcreteStateA(); Context *context = new Context(pState); context->Request(); //Output: I'm concretestateA. State *pState2 = new ConcreteStateB(); context->ChangeState(pState2); context->Request(); //Output: I'm concretestateB. if(pState){ delete pState; pState = NULL; } if(pState2){ delete pState2; pState2 = NULL; } if(context){ delete context; context = NULL; } return 0; }
위 내용은 C++ 디자인 패턴 간략 소개의 상태 패턴 내용입니다. PHP 중국어 웹사이트(www.php .cn)!