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

微信你的意义是什么小程序网站建站 seo

微信你的意义是什么小程序,网站建站 seo,个人网站建设需要多少钱,成都网站建设kaituozu​策略模式(Strategy Pattern)是一种 ​​行为型设计模式​​,用于动态切换算法或策略​​,使得算法可以独立于客户端变化。它通过封装算法策略并使其可互换,提升了系统的灵活性和扩展性,尤其适用于需要多种…

​策略模式(Strategy Pattern)是一种 ​​行为型设计模式​​,用于动态切换算法或策略​​,使得算法可以独立于客户端变化。它通过封装算法策略并使其可互换,提升了系统的灵活性和扩展性,尤其适用于需要多种算法变体需要避免使用复杂条件分支的场景。

优点:

​​​​1.符合开闭原则​​
​​扩展性​​:新增策略时无需修改现有代码,只需添加新的策略类。
​​维护性​​:修改某个策略的实现不会影响其他策略或上下文逻辑。
​​2.消除复杂条件分支​​
避免大量 if-else 或 switch 语句,代码更简洁清晰。
3.​​算法复用​​
同一策略可被多个上下文对象复用(如多个敌人共享同一个追击策略)。
​​4.动态切换行为​​
运行时灵活切换策略(如根据游戏难度动态调整敌人AI)。

缺点:

1.​​类数量膨胀​​
每个策略对应一个类,可能导致类数量过多(例如10种移动策略 → 10个类)。
​​优化​​:使用工厂模式或ScriptableObject统一管理策略创建。
2.​​客户端需了解策略差异​​
客户端需要知道不同策略的存在及其适用场景,可能增加使用复杂度。
​​优化​​:通过配置文件或策略工厂隐藏策略实现细节。
​​3.过度设计风险​​
简单算法(如单一固定行为)使用策略模式可能增加不必要的复杂性。
​​4.性能开销​​
高频切换策略可能导致对象创建/销毁开销(如每帧切换策略)。
​​优化​​:将无状态的策略类设为单例,或使用对象池复用策略实例。

说明例子:

1.UML类图:

2.实现:

1.定义策略基类:

public abstract class Strategy
{public abstract void AlgorithmInterface();
}

2.定义策略上下文类:

   public class StrategyContext{Strategy m_strategy = null;//设置算法public void SetStrategy(Strategy strategy){m_strategy = strategy;}//执行当前算法public void ContextInterface(){m_strategy.AlgorithmInterface();}}

3.定义具体策略类:

    public class ConcreteStrategyA : Strategy{public override void AlgorithmInterface(){Debug.Log("ConcreateStrategyA.AlgorithmInterface");}}public class ConcreteStrategyB : Strategy{public override void AlgorithmInterface(){Debug.Log("ConcreateStrategyB.AlgorithmInterface");}}public class ConcreteStrategyC : Strategy{public override void AlgorithmInterface(){Debug.Log("ConcreateStrategyC.AlgorithmInterface");}}

4.测试类:

public class StrategyPattern : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){StrategyContext context = new StrategyContext();//设置算法context.SetStrategy(new ConcreteStrategyA());context.ContextInterface();context.SetStrategy(new ConcreteStrategyB());context.ContextInterface();context.SetStrategy(new ConcreteStrategyC());context.ContextInterface();}
}

游戏中使用场景:

​​1.AI行为系统​​
​​敌人移动策略​​:追击、绕后、随机游走、巡逻路径。
​​攻击策略​​:近战连击、远程射击、投掷炸弹、召唤援军。
2.​​技能/武器系统​​
​​武器开火模式​​:点射、连发、散射、蓄力攻击。
​​技能释放逻辑​​:单体锁定、区域AOE、链式弹射。
​​3.伤害计算系统​​
​​伤害公式​​:物理伤害、魔法伤害、真实伤害(无视防御)。
​​抗性计算​​:不同属性(火、冰、毒)使用独立的抗性策略。
4.​​游戏难度调整​​
​​简单难度​​:敌人使用保守策略(低攻击频率、低伤害)。
​​困难难度​​:敌人使用激进策略(高攻击频率、包围战术)。

总结:

策略模式通过解耦算法实现与使用​​,为游戏开发提供了高度灵活的决策系统,尤其适用于需要动态切换行为或维护多种算法变体的场景,其核心价值在于提升代码可维护性​、增强扩展性​​。

参考书籍:

《Hands-On Game Development Patterns with Unity 2019》

《设计模式与游戏完美开发》

http://www.dtcms.com/wzjs/810039.html

相关文章:

  • 南昌网站空间网页设计与网站建设+pdf
  • 有专门做电商网站的CMS吗免费的那种软件
  • 云服务器可以做网站有没有做网页的兼职网站
  • 咸宁有做网站的吗网站制作 服务
  • 高端网站建设价钱网站域名备案注册证书查询
  • 网站建设主体力量长沙整合推广
  • 个人域名用来做淘宝客网站环境设计专业必看网站
  • 个人主机做网站网站开发 承接
  • 做爰的最好看的视频的网站上海建筑设计公司都有哪些
  • 批量查询网站是否正常甘肃网站备案审核时间
  • 旅游网站建设实训报告提升学历选择哪种方式好
  • 巫山做网站哪家强宝塔做两个网站
  • 做网站避免上当欧洲vodafonewifi巨大仙踪林
  • 网站怎么做成二维码电器网站制作价格
  • 没有域名怎么搭建网站织梦网站内容怎么做付费可见
  • 设计师的个人网站大数据系统
  • 广告行业做网站哪个好网页管理平台
  • 亚马逊店铺网站建设费用免费的素材库
  • 网站建设销售好做嘛建站软件有哪些功能
  • 新手怎么做企业网站网站管理制度建设
  • 广州做网站信科网络酷炫网站源码
  • 淘宝网官方网站购物商城建设领域行政处罚查询网站
  • 有哪些可以做问卷的网站湛江网站建设优化推广
  • 毕设做系统好还是做网站好小金狮游戏ui培训
  • 油气集输毕业设计代做网站WordPress 编辑器修改默认字号
  • 网站大全网址大全软件做网站 编程自己写
  • 如何自己做优惠卷网站网络黄页网址
  • 做展示类网站福州便民生活网
  • 破解空间网站学习做网站可以吗
  • 网站管理后台如果在代理商那里接手会不会停掉如何提高网站在搜索引擎中的排名