>  기사  >  백엔드 개발  >  C++ 디자인 패턴의 상태 패턴에 대한 간략한 소개

C++ 디자인 패턴의 상태 패턴에 대한 간략한 소개

黄舟
黄舟원래의
2017-01-17 13:34:081494검색

상태 모드(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&#39;m concretestateA.\n";
    }
};

class ConcreteStateB: public State{
public:
    virtual void Handle(Context *pContext){
        std::cout << "I&#39;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&#39;m concretestateA.

    State *pState2 = new ConcreteStateB();
    context->ChangeState(pState2);
    context->Request();  //Output: I&#39;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)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.