设计模式-状态模式(State)

    xiaoxiao2025-04-28  14

    // 状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。[8/11/2016 ZOSH];

    // 应用场景:1.一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为; 2. 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。

    class Work; class State { public: State(void); ~State(void); virtual void WriteProgram(Work* w)=0; }; // 只能这样安排 #include "Work.h"

    #include "State.h"

    class Work { public: Work(void); ~Work(void); void SetState(State* temp) { current = temp; } void Writeprogram() { current->WriteProgram(this); } public: double hour; private: State* current; };

    class Work;

    #include "State.h" class ForenoonState : public State { public: ForenoonState(void); ~ForenoonState(void); void WriteProgram(Work* w); };

    void ForenoonState::WriteProgram(Work* w) { if((w->hour)<12) cout<<"当前时间:"<<w->hour<<" ForenoonState - 现在的精神无敌好"<<endl; else { w->SetState(new NoonState()); w->Writeprogram(); //注意加上这句 } }

    class Work; #include "State.h" class NoonState : public State { public: NoonState(void); ~NoonState(void); void WriteProgram(Work* w) { if((w->hour)<13) cout<<"当前时间:"<<w->hour<<" NoonState - 还不错啦"<<endl; else cout<<"当前时间:"<<w->hour<<" NoonState - 不行了,还是睡觉吧"<<endl; } };

    #include "Work.h" // 状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。[8/11/2016 ZOSH]; // 应用场景:1.一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为; 2. 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。 int _tmain(int argc, _TCHAR* argv[]) { Work* mywork = new Work(); mywork->hour=9; mywork->Writeprogram(); mywork->hour = 14; mywork->Writeprogram(); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1298535.html
    最新回复(0)