设计模式学习-----状态模式
5019 点击·0 回帖
![]() | ![]() | |
![]() | 状态模式 GOOD:当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,可考虑用到状态模式。 [html] #include <iostream> using namespace std; class Work; class ForenoonState; class NoonState; class State { public: virtual void WriteProgram(Work* w)=0; }; class Work { private: State* current; public: double hour; public: Work(); void SetState(State* temp) { current =temp; } void Writeprogram() { current->WriteProgram(this); } }; class NoonState :public State { public: virtual void WriteProgram(Work* w) { cout<<"execute"<<endl; if((w->hour)<13) cout<<"还不错啦"<<endl; else cout<<"不行了,还是睡觉吧"<<endl; } }; class ForenoonState : public State { public: virtual void WriteProgram(Work* w) { if((w->hour)<12) cout<<"现在的精神无敌好"<<endl; else { w->SetState(new NoonState()); w->Writeprogram(); //注意加上这句 } } }; Work::Work() { current = new ForenoonState(); } //客户端: int main() { Work* mywork=new Work(); mywork->hour=9; mywork->Writeprogram(); mywork->hour = 14; mywork->Writeprogram(); return 0; } | |
![]() | ![]() |