设计模式实践-状态模式

场景

仪表状态上线、发送、离线状态切换

实现代码

上下文对象

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);
        }
    }
}
posted @ 2016-08-01 21:41  4Thing  阅读(142)  评论(0编辑  收藏  举报