当前位置: 首页 > news >正文

四川省城乡建设厅门户网站网页设计教学网站

四川省城乡建设厅门户网站,网页设计教学网站,c语言如何做网站,crm管理系统使用状态模式​​是一种​​行为型设计模式​​#xff0c;允许对象在内部状态改变时动态改变其行为​​#xff0c;使对象的行为看起来像是改变了。该模式通过将状态逻辑拆分为独立类​​#xff0c;消除复杂的条件分支语句#xff0c;提升代码的可维护性和扩展性。 状态模式的…状态模式​​是一种​​行为型设计模式​​允许对象在内部状态改变时动态改变其行为​​使对象的行为看起来像是改变了。该模式通过将状态逻辑拆分为独立类​​消除复杂的条件分支语句提升代码的可维护性和扩展性。 状态模式的核心价值​​在于​​解耦状态逻辑与上下文​​为复杂状态管理提供结构化解决方案。在游戏开发中它尤其适合管理角色控制、AI行为等动态状态流转场景但需权衡类膨胀和性能成本。 优点 1. ​​消除复杂条件分支消除大量if-else或switch语句避免代码臃肿且难以维护将每个分支独立为一个状态类通过状态切换取代条件分支。 2.提高扩展性新增状态无需修改上下文类只需添加新的状态类即可。 3.职责单一化每个状态类仅关注自身行为符合单一职责原则。 4.状态转换显式管理状态转换条件封装在状态类中避免分散在代码各处。 5.提高可测试性每个状态可单独测试无需依赖其他逻辑。 缺点  1.类数量增多每个状态对应一个类可能导致类数量过多。例如10个状态 → 10个类 接口 上下文类 优化        1.​使用 ​​层级状态机​​ 合并相似状态如 BaseMovementState 派生 Walk/Run。        2.对简单状态使用 ​​枚举 委托​​ 简化实现。 2.Context数据共享状态类需访问上下文数据可能导致过度暴露接口如Player类需向状态类公开血量、位置等字段。 优化         1.将共享数据封装为 ​​上下文接口​​限制访问权限。         2.通过事件/委托通信减少直接依赖。 3.性能开销频繁创建/销毁状态对象可能影响性能如每帧切换状态。 优化          1.使用​​对象池​​复用状态实例。 说明例子 1.UML类图 2.实现 1.定义State的抽象类 public abstract class State{protected Context m_Context null;public State(Context _context){m_Context _context;}public abstract void Handler(int value);} 2.定义Context类 public class Context{State m_State null;public void Request(int value){m_State.Handler(value);}public void SetState(State state){Debug.Log(Context.SetState: state);m_State state;}} 3.定义具体状态类ConcreteStateA、ConcreteStateB、ConcreteStateC public class ConcreteStateA : State{public ConcreteStateA(Context _context) : base(_context){}public override void Handler(int value){Debug.Log(ConcreteStateA.Handler);if (value 10){m_Context.SetState(new ConcreateStateB(m_Context));}}}public class ConcreateStateB : State{public ConcreateStateB(Context _context) : base(_context){}public override void Handler(int value){Debug.Log(ConcreteStateB.Handler);if (value 20){m_Context.SetState(new ConcreateStateC(m_Context));}}}public class ConcreateStateC : State{public ConcreateStateC(Context _context) : base(_context){}public override void Handler(int value){Debug.Log(ConcreteStateC.Handler);if (value 30){m_Context.SetState(new ConcreteStateA(m_Context));}}} 4.测试类 public class StateParttern : MonoBehaviour {// Start is called before the first frame updatevoid Start(){Context context new Context();context.SetState(new ConcreteStateA(context));context.Request(5);context.Request(15);context.Request(25);context.Request(35);} } 游戏中的使用场景 ​​1.角色行为管理​​玩家状态 -- 站立、移动、跳跃、攻击、死亡。 ​​2.AI决策系统​​敌人AI -- 巡逻、追击、攻击、逃跑。 ​3.​UI界面切换​​游戏菜单 -- 主界面、设置、背包、暂停。 4.场景切换游戏场景 -- 开始场景、大厅场景、战斗场景切换。 ​​5.物理交互系统​​物体状态 -- 静止、运动、碰撞、销毁。 总结 状态模式的核心价值​​在于解耦状态逻辑与上下文​​为复杂状态管理提供结构化解决方案。在游戏开发中它尤其适合管理角色控制、AI行为等动态状态流转场景但需权衡类膨胀和性能成本。 参考书籍 《Hands-On Game Development Patterns with Unity 2019》 《设计模式与游戏完美开发》
http://www.zqtcl.cn/news/398168/

相关文章:

  • 马鞍山集团网站建设客流分析系统公司
  • 淘客网站怎么做啊抖音怎么挂小程序赚钱
  • 在哪里申请网站域名美妆销售网站开发的目的
  • 网站自动跳转施秉网站建设
  • 聊城做网站的公司咨询学校网站模板 dedecms
  • 网站域名查询赣州网站设计有哪些
  • 网站设计做多宽150m网站空间流量大吗
  • 制作php网站用什么软件东莞东坑网站建设
  • 怎样做网站外部样式wordpress爱找主题
  • 自己搭建服务器做网站要多久问答网站如何优化
  • 网站用的服务器小程序拉新项目
  • 建设银行 访问的网站出错珠宝类网站模板
  • 网站百度关键词排名软件xampp里wordpress安装教程
  • 杭州网站设计建立企业网站专业做电脑系统下载网站好
  • 哈尔滨建设网站成本网站建设无广告
  • 发布网站搭建教程云排名网站
  • 无锡大型网站建设房地产景区网站建设方案
  • 自学网站建设工资公众号怎么开通直播功能
  • 网站建设上市公司wordpress park主题
  • 百度网站建设一年多少钱奇艺广州网站建设 熊掌号
  • 建设网站怎么收费标准网站和自媒体都可以做
  • 网站自己怎么做无锡常规网络营销是什么
  • 活泼风格的网站crm免费客户管理系统
  • 网站系统发生错误百度seo灰色词排名代发
  • 免费做名片儿的网站wordpress grace6
  • 有关网站开发的创意四川工程造价信息网官网
  • 网站目录结构北京注册公司地址可以是住宅吗
  • 龙信建设集团网站傻瓜式建站软件下载
  • 在360做网站和百度做网站的区别什么是网站地址
  • 营销型的物流网站模板下载长江设计公司