zoukankan      html  css  js  c++  java
  • 设计模式 之 《状态模式》

    #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;
    }
    */
  • 相关阅读:
    nsstring字符串重组
    nssstring 转换大小写
    NSString的截取
    SEL数据类型
    protocol(协议)的一些要点
    block数据类型
    category应用(计算nssting的数量)
    category分类
    mvc购物车项目(2)
    ArrayList中存储数组时需要注意到的问题
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3417198.html
Copyright © 2011-2022 走看看