设计模式

设计模式 - 状态模式

2016-05-02  本文已影响35人  Mitchell

一、概述


二、举例

//工作状态基类
class State
{
    public abstract void WriteProgram(Work w);
}
//上午工作状态类
public class ForennoonState :State
{
    public overridevoid WriteProgram (Work w)
    {
        if (w.Hour < 12)
        {
            Console.WriteProgram("当前时间:{0} 上午工作",w.Hour);
        }   
        else
        {
            w.SetState(new NoonState());
            w.WriteProgram();   
        }
    }
}
//下午工作状态类
public class  AfternoonState:State
{
    public override void WriteProgram (Work w)
    {
        if (w.TaskFinished)
        {
            w.SetState(new RestState());
            w.WriteProgram();
        }
        else
        {
            if (w.Hour < 21)
            {
            Console.WriteProgram("当前时间:{0} 午休",w.Hour);
            }else
            {
                w.SetState(new SleepingState());
                w.WriteProgram();
            }
        }
    }
}
//工作类
public class Work
{
    private State state;
    public Work()
    {
        current = new ForennoonState();
    }
    private double hour;
    public double Hour
    {
        get{return hour;}
        set{hour = value;}
    }
    private bool finish = false;
    public bool TaskFinished
    {
        get{return finish;}
        set{finish = value;}
    }
    public void setState(State s)
    {
        current = s;
    }
    public void WriteProgram()
    {
        current.WriteProgram(this);
    }
}
//客户端调用
static void Main(string[] args)
{
    Work m = new Work();
    m.Hour = 9;
    m.WriteProgram();
    m.Hour = 10;
    m.WriteProgram();
    m.Hour = 12;
    m.WriteProgram();
    m.Hour = 15;
    m.WriteProgram();
    m.Hour = 17;
    m.WriteProgram();
    m.TaskFinished = false;
    Console.Read();
}
上一篇下一篇

猜你喜欢

热点阅读