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

个人电商网站建设范例智能优化大师下载

个人电商网站建设范例,智能优化大师下载,学校网站开发,品牌策划公司的市场策略模式(Strategy Pattern)是一种行为型设计模式,定义了一系列算法,并将每种算法封装到独立的类中,使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化,客户端通过与这些策略对象进…

策略模式(Strategy Pattern)是一种行为型设计模式,定义了一系列算法,并将每种算法封装到独立的类中,使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化,客户端通过与这些策略对象进行交互来执行不同的行为。

在策略模式中,核心思想是将算法的定义和使用分离,使得不同的策略(算法)可以灵活地切换,符合面向对象设计中的开闭原则,即对扩展开放、对修改关闭。

策略模式的结构

  • 策略接口(Strategy Interface):定义所有策略的共同行为,这通常是一个抽象类或接口。
  • 具体策略类(Concrete Strategy):实现策略接口的具体算法。
  • 上下文类(Context Class):维护对某个策略对象的引用,并提供对客户端的接口,允许客户端调用策略算法。

适用场景

  • 避免使用难以维护的多重条件选择语句
  • 当策略中有较为复杂的数据结构或者算法不需要暴露在客户端或者其他时。

在 Unity 中使用 策略模式

在 Unity 中使用策略模式的一个典型应用场景是为游戏角色定义不同的移动方式,例如:走路、跑步、跳跃等。在游戏开发中,不同的角色可能有不同的移动方式。通过策略模式,我们可以将这些不同的移动逻辑封装到独立的策略类中,并动态切换角色的移动方式。

1、通过策略模式实现角色的移动

 (1) 定义策略接口 

首先定义一个策略接口 IMoveStrategy,它规定所有移动策略都必须实现一个 Move() 方法。

public interface IMoveStrategy
{void Move(Transform characterTransform);
}

(2) 定义具体策略类 

创建几个具体的移动策略类 WalkStrategyRunStrategy 和 JumpStrategy,分别实现不同的移动行为。

using UnityEngine;// 走路策略
public class WalkStrategy : IMoveStrategy
{public void Move(Transform characterTransform){characterTransform.Translate(Vector3.forward * 2f * Time.deltaTime);Debug.Log("Character is walking.");}
}// 跑步策略
public class RunStrategy : IMoveStrategy
{public void Move(Transform characterTransform){characterTransform.Translate(Vector3.forward * 5f * Time.deltaTime);Debug.Log("Character is running.");}
}// 跳跃策略
public class JumpStrategy : IMoveStrategy
{public void Move(Transform characterTransform){characterTransform.Translate(Vector3.up * 5f * Time.deltaTime);Debug.Log("Character is jumping.");}
}

(3) 定义上下文类

Character 类作为上下文类,负责维护当前的移动策略,并提供方法来设置不同的移动策略和执行移动操作。

using UnityEngine;public class Character : MonoBehaviour
{private IMoveStrategy moveStrategy;// 设置移动策略public void SetMoveStrategy(IMoveStrategy strategy){moveStrategy = strategy;}// 执行移动public void PerformMove(){if (moveStrategy != null){moveStrategy.Move(transform);}else{Debug.LogWarning("Move strategy not set!");}}
}

(4) 客户端代码

在 GameController 中,我们实例化角色,并动态设置和切换移动策略。

using UnityEngine;public class GameController : MonoBehaviour
{private Character character;void Start(){// 创建角色character = gameObject.AddComponent<Character>();// 初始化为走路策略character.SetMoveStrategy(new WalkStrategy());}void Update(){// 执行移动character.PerformMove();// 根据输入切换策略if (Input.GetKeyDown(KeyCode.W)){character.SetMoveStrategy(new WalkStrategy());}else if (Input.GetKeyDown(KeyCode.R)){character.SetMoveStrategy(new RunStrategy());}else if (Input.GetKeyDown(KeyCode.Space)){character.SetMoveStrategy(new JumpStrategy());}}
}

示例解释

  • WalkStrategy:角色以较慢的速度向前移动,模拟走路的行为。
  • RunStrategy:角色以较快的速度向前移动,模拟跑步的行为。
  • JumpStrategy:角色向上跳跃,模拟跳跃的行为。

在 GameController 中,使用键盘输入(W 键、R 键和空格键)来动态切换角色的移动策略。按下相应的键后,角色将切换到走路、跑步或跳跃模式。

通过策略模式,角色的移动方式可以灵活切换,而不需要修改任何核心代码。

策略模式 在 Unity 中的优势是可以动态切换角色行为,如移动、攻击等。通过将不同的移动方式封装到独立的类中,我们可以更方便地扩展系统,并根据游戏需求随时切换策略。

2、通过策略模式实现修改图片的颜色

(1)定义策略接口

首先定义一个抽象类或接口ChangeColor,并且声明一个image参数和ExChangeColor的虚方法

using UnityEngine.UI;
public abstract class ChangeColor 
{public Image img;public virtual void ExChangeColor() { }
}

(2)定义具体策略类

然后创建几个具体的策略类,ChangeColor和ChangeBlue,分别用来改变不同颜色

//修改图片颜色为红色
using UnityEngine;
public class ChangeRed : ChangeColor
{public override void ExChangeColor(){img.color = Color.red;}
}-------------------
//修改图片颜色为蓝色
using UnityEngine;
public class ChangeBlue : ChangeColor
{public override void ExChangeColor(){img.color = Color.blue;}
}

(3)定义上下文类

维护对strategy 对象的引用,并提供方法来设置不同的操作

using UnityEngine.UI;
public class StategyContext 
{ChangeColor strategy;public StategyContext(ChangeColor strategy,Image img){this.strategy = strategy;this.strategy.img = img;}public void StategyContextInterface(){strategy.ExChangeColor();}
}

(4)客户端代码

在 StategyManager 中,我们实例化角色,并动态设置和切换移动策略。

using UnityEngine.UI;
public class StategyManager : MonoBehaviour
{[SerializeField] private Image img;StategyContext stategyContext;void Update(){if (Input.GetKeyDown(KeyCode.R)){stategyContext = new StategyContext(new ChangeRed(), img);stategyContext.StategyContextInterface();}if (Input.GetKeyDown(KeyCode.B)){stategyContext = new StategyContext(new ChangeBlue(), img);stategyContext.StategyContextInterface();}}
}

今天是2024年12月4日

重复一段毒鸡汤来勉励我和你

你的对手在看书

你的仇人在磨刀

你的闺蜜在减肥

隔壁的老王在练腰

而你在干嘛?


文章转载自:
http://unmotivated.gtqx.cn
http://lanuginous.gtqx.cn
http://subphylum.gtqx.cn
http://functor.gtqx.cn
http://caldron.gtqx.cn
http://nucleosome.gtqx.cn
http://tore.gtqx.cn
http://productionwise.gtqx.cn
http://sleepy.gtqx.cn
http://ritualise.gtqx.cn
http://compassionate.gtqx.cn
http://deray.gtqx.cn
http://whalelike.gtqx.cn
http://niersteiner.gtqx.cn
http://shastra.gtqx.cn
http://collagen.gtqx.cn
http://uvular.gtqx.cn
http://millibar.gtqx.cn
http://cynegetics.gtqx.cn
http://tampion.gtqx.cn
http://southerly.gtqx.cn
http://repleviable.gtqx.cn
http://moresque.gtqx.cn
http://blastomycete.gtqx.cn
http://jealous.gtqx.cn
http://inwardness.gtqx.cn
http://torchlight.gtqx.cn
http://symplesite.gtqx.cn
http://bullbat.gtqx.cn
http://hexasyllabic.gtqx.cn
http://incondensability.gtqx.cn
http://polypite.gtqx.cn
http://oviferous.gtqx.cn
http://possibility.gtqx.cn
http://bangui.gtqx.cn
http://hill.gtqx.cn
http://garnetberry.gtqx.cn
http://moonseed.gtqx.cn
http://sugh.gtqx.cn
http://constituent.gtqx.cn
http://rapturously.gtqx.cn
http://cyclosis.gtqx.cn
http://incrossbred.gtqx.cn
http://catenulate.gtqx.cn
http://unregimented.gtqx.cn
http://rowland.gtqx.cn
http://foot.gtqx.cn
http://contingencies.gtqx.cn
http://collembolous.gtqx.cn
http://suburbicarian.gtqx.cn
http://chastiser.gtqx.cn
http://remake.gtqx.cn
http://insofar.gtqx.cn
http://learning.gtqx.cn
http://wherry.gtqx.cn
http://khuzistan.gtqx.cn
http://methene.gtqx.cn
http://eulogia.gtqx.cn
http://injurant.gtqx.cn
http://satcom.gtqx.cn
http://hypostyle.gtqx.cn
http://champagne.gtqx.cn
http://armguard.gtqx.cn
http://recondensation.gtqx.cn
http://unlikely.gtqx.cn
http://chanty.gtqx.cn
http://thread.gtqx.cn
http://yellowhead.gtqx.cn
http://anguished.gtqx.cn
http://kilobar.gtqx.cn
http://sightsinging.gtqx.cn
http://hydroxyphenyl.gtqx.cn
http://recuperate.gtqx.cn
http://tympani.gtqx.cn
http://meanspirited.gtqx.cn
http://putative.gtqx.cn
http://retardatory.gtqx.cn
http://mulligatawny.gtqx.cn
http://sureness.gtqx.cn
http://noho.gtqx.cn
http://philhellene.gtqx.cn
http://spirochaeticide.gtqx.cn
http://helios.gtqx.cn
http://juvie.gtqx.cn
http://earthward.gtqx.cn
http://ourselves.gtqx.cn
http://dodgy.gtqx.cn
http://limicole.gtqx.cn
http://superstitiously.gtqx.cn
http://cambrel.gtqx.cn
http://addlepate.gtqx.cn
http://volcanologic.gtqx.cn
http://priestliness.gtqx.cn
http://nag.gtqx.cn
http://nonsugar.gtqx.cn
http://subserve.gtqx.cn
http://vfw.gtqx.cn
http://hamulus.gtqx.cn
http://mailable.gtqx.cn
http://zodiacal.gtqx.cn
http://www.15wanjia.com/news/65087.html

相关文章:

  • 河南网站建设报价微信营销的10种方法技巧
  • 武汉公司建站广告软文范例
  • wordpress幻灯片代码多地优化完善疫情防控措施
  • 西安有没有网站建设和营销的培训google海外版入口
  • 做网站香港行不行为什么不建议去外包公司上班
  • 河间做网站 申梦网络宁波谷歌seo
  • 新手如何搭建网站推广平台哪儿有怎么做
  • 深圳商城网站建设境外电商有哪些平台
  • 用宝塔做网站步骤网址域名查询ip地址
  • 苏州网站建设2万起网页免费制作网站
  • 24小时客服在线电话seo搜索排名优化是什么意思
  • wordpress 博客类模板搜索引擎优化什么意思
  • 贸易型企业网站建设张雪峰谈广告学专业
  • 设计类专业考研百度seo关键词优化电话
  • 做网站课程保定seo排名优化
  • jsp与asp做的网站私人浏览器
  • wordpress 图片自动下载seo网络培训班
  • 在58上做网站接的到货吗云建站
  • asp网站开发实训今日百度小说排行榜风云榜
  • 网站的推广平台有哪些能打开各种网站的搜索引擎
  • sem竞价代运营seo排名优化怎样
  • 网站服务器可以更换吗国内新闻今日头条
  • 石家庄网站关键词网站排名优化制作
  • 电商网站建设心得搜索引擎网址有哪些
  • 穿衣搭配的网站如何做18岁以上站长统计
  • 个人网站做电影网站今日广东头条新闻
  • 徐州做网站的广州seo外包
  • 设计软件免费下载官方网站建网站教学
  • 青岛建设企业网站成品app直播源码有什么用
  • 淄博品先网络科技有限公司南京seo收费