Chinaunix首页 | 论坛 | 博客
  • 博客访问: 455127
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 16:56:53

public interface State
{
    
//导致状态改变的所有方法

    void Start();
    
void
 Pause();
    
void
 Resume();
    
void
 Stop();
}


//每一个状态对应一个State的派生类,在该类中以其对应状态为源点,实现转换至其他状态时的方法
public class Running : State
{
    
private Machine m_machine = null
;
    
    
public
 Running(Machine mac)
    
{
        m_machine 
=
 mac;
    }

    
    
//以Running为源点的方法,只有Pause()、Stop()
    public void Start()
    
{
        ;
//在Running状态下,不支持Start()方法

    }

    
    
public void Pause()
    
{
        Console.WriteLine(
"Paused."
);
        m_machine.SetState(m_machine.Paused);
    }

    
    
public void Resume()
    
{
        ;
//在Running状态下,不支持Resume()方法

    }

    
    
public void Stop()
    
{
        Console.WriteLine(
"Stopped."
);
        m_machine.SetState(m_machine.Stopped);
    }

}


public class Paused : State
{
    
//需要实现Resume()、Stop()

}


public class Stopped : State
{
    
//需要实现Start()

}


public class Machine
{
    
//为每一种状态准备一个State对象,需要为这些对象都提供一个Property

    private Running m_running   = new Running();
    
private Paused m_paused    = new
 Paused();
    
private Stopped m_stopped = new
 Stopped();
    
    
public
 State Running
    
{
        
get

        
{
            
return
 m_running;
        }

    }


    
//还有Property Paused与Stopped在此定义


    
//初始状态为Stopped

    private State m_state = m_stopped;
    
    
public void
 SetState(State st)
    
{
        m_state 
=
 st;
    }

    
    
public void PressStart()
    
{
        m_state.Start();
    }

    
    
private bool m_pausedown = false;
    
public void
 PressPause()
    
{
        
if (m_pausedown == false
)
            m_state.Pause();
        
else

            m_state.Resume();
        
        m_pausedown 
= ~m_pausedown;
    }

    
    
public void PressStop()
    
{
        m_state.Stop();
    }

}

--------------------next---------------------

阅读(219) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~