欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 设计模式-状态模式

设计模式-状态模式

2025/2/24 7:13:26 来源:https://blog.csdn.net/qq_58870988/article/details/141367564  浏览:    关键词:设计模式-状态模式

概述

状态模式也是一种行为型的设计模式其最主要的思想是将状态封装到对象中,然后对象的行为依赖于状态,使用Switch语句是有不同的,较少了很多分支语句的使用,可以参考下面的例子,如果使用分支语句会有比较多的判断,但是使用状态模式,就减少了对应的判断,也使得代码在使用的时候会减少出错,因为使用的时候只有切换,不用传具体的状态,不过这个模式的缺点也一眼就可以看出,代码控制性不如分支语句。其主要组成部分是状态接口,具体的状态,状态控制器用状态控制器控制状态的切换。举例如下


例子:现在有个游戏BOOS的状态有,普通,生气,狂暴三个状态,使用一个状态控制器调用一个方法控BOSS的状态切换。

状态模式

using System.Numerics;internal class Program
{private static void Main(string[] args){StateControl SC = new StateControl(new CommonState());SC.Switch();  //切换到普通状态SC.Switch();  //切换到生气状态SC.Switch();  //切换到狂暴状态}public interface IState//状态接口{void SwitchingStatus(StateControl sc);}public class CommonState : IState//普通状态{public void SwitchingStatus(StateControl sc){Console.WriteLine("BOOS进入普通状态!");sc.SetState(new AngryState());}}public class AngryState : IState//生气状态{public void SwitchingStatus(StateControl sc){Console.WriteLine("BOOS进入生气状态!");sc.SetState(new MusthState());}}public class MusthState : IState//狂暴状态{public void SwitchingStatus(StateControl sc){Console.WriteLine("BOOS进入狂暴状态!");}}public class StateControl//状态控制器{private IState _state;public StateControl(IState state){_state = state;}public void SetState(IState state){_state = state;}public void Switch(){_state.SwitchingStatus(this);}}
}

运行结果:

BOOS进入普通状态!
BOOS进入生气状态!
BOOS进入狂暴状态!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词