zoukankan      html  css  js  c++  java
  • 状态模式

    1】什么是状态模式?
    
    不同的状态,不同的行为。或者说,每个状态有着相应的行为。
    
    【2】状态模式的代码示例:
    
    代码示例:
    #include <iostream>
    #include <string>
    using namespace std;
    
    class Work;
    class State;
    class ForenonnState;
    
    
    class State
    {
    public:
        virtual void writeProgram(Work*) = 0;
    };
    
    class Work
    {
    public:
        int hour;
        State *current;
        Work();
        void writeProgram()
        {
            current->writeProgram(this);
        }
    };
    
    class EveningState : public State
    {
    public:
        void writeProgram(Work *w)
        {
            cout << "当前时间: " << w->hour << "心情很好,在看《明朝那些事儿》,收获很大!" << endl;
        }
    };
    
    class AfternoonState : public State
    {
    public:
        void writeProgram(Work *w)
        {
            if (w->hour < 19)
            {
                cout << "当前时间: " << w->hour << "下午午睡后,工作还是精神百倍!" << endl;
            }
            else
            {
                w->current = new EveningState();
                w->writeProgram();
            }
        }
    };
    
    class ForenonnState : public State
    {
    public:
        void writeProgram(Work *w)
        {
            if (w->hour < 12)
            {
                cout << "当前时间: " << w->hour << "上午工作精神百倍!" << endl;
            }
            else
            {
                w->current = new AfternoonState();
                w->writeProgram();
            }
        }
    };
    
    Work::Work()
    {
        current = new ForenonnState();
    }
    
    int main()
    {
        Work *w = new Work();
        w->hour = 21;
        w->writeProgram();
        return 0;
    }
    //Reuslt:
    //当前时间: 21心情很好,在看《明朝那些事儿》,收获很大!

    http://www.cnblogs.com/Braveliu/p/3946826.html

  • 相关阅读:
    strcpy ,strncpy ,strlcpy(转载)
    窗口刷新时的问题(转)
    Linux下的实时流媒体编程(RTP,RTCP,RTSP)
    YUV色彩空间(转自百度百科)
    VC++2005快速构建安全的应用程序
    Linux多线程编程
    C++ PASCAL关键字(转)
    SkinMagic 进行皮肤设置
    .h和.cpp文件的区别
    strcpy_s与strcpy安全性的比较(转载)
  • 原文地址:https://www.cnblogs.com/leijiangtao/p/4534596.html
Copyright © 2011-2022 走看看