设计模式 之 《状态模式》
#ifndef __STATE_MODEL__ #define __STATE_MODEL__ #include <iostream> using namespace std; /* GOOD:当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,可考虑用到状态模式。 */ 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 writeProgramW(){ current->writeProgram(this); } }; class NoonState : public State { public: virtual void writeProgram(Work* w) { cout<<"excute"<<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->writeProgramW(); //注意加这句 } } }; Work::Work() { current = new ForenoonState(); } #endif //__STATE_MODEL__ /* #include "StateModel.h" int _tmain(int argc, _TCHAR* argv[]) { Work* mywork = new Work(); mywork->hour = 9; mywork->writeProgramW(); mywork->hour = 14; mywork->writeProgramW(); return 0; } */
Dreams are one of those things that keep you going and happy!!!