Mode État (State) : Permet de modifier le comportement d'un objet lorsque son état interne change. L'objet semble avoir changé de classe.
Le modèle d'état résout principalement la situation où l'expression conditionnelle qui contrôle la transition d'état d'un objet est trop complexe. En transférant la logique du jugement d’état à une série de classes représentant différents états, des jugements complexes peuvent être logicisés.
Implémentation du modèle :
[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; };
Client
[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; }
Ce qui précède est le contenu du modèle de conception C, brève introduction au modèle d'état. Pour un contenu plus connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !