设计模式实践-状态模式
场景
仪表状态上线、发送、离线状态切换
实现代码
上下文对象
namespace DesignPatterns.State
{
/// <summary>
/// 维护状态类
/// </summary>
public class Context
{
/// <summary>
/// 状态
/// </summary>
private IState _state;
/// <summary>
/// Initializes a new instance of the <see cref="Context" /> class.
/// </summary>
/// <param name="state">状态对象</param>
public Context(IState state)
{
this._state = state;
}
/// <summary>
/// 获取状态
/// </summary>
/// <returns>返回状态</returns>
public IState GetState()
{
return this._state;
}
/// <summary>
/// 设置状态
/// </summary>
/// <param name="state">状态</param>
public void SetState(IState state)
{
this._state = state;
if (this._state == null)
{
Console.WriteLine("状态为空");
return;
}
Console.WriteLine("当前状态:" + this._state.GetType().ToString());
}
/// <summary>
/// 请假
/// </summary>
public void Request()
{
this._state.Handle(this);
}
}
}