多语言展示
当前在线:164今日阅读:55今日分享:34

Unity 设计模式之 策略模式的实例介绍

Unity 设计模式之 策略模式的实例介绍。本节介绍,在Unity开发中,策略设计模式的使用案例,具体如下
工具/原料

Unity C#

基础知识
1

策略模式:       他定义了算法家族,分别封装起来,让他们之间可以互相替换;此模式让算法的变化,不会影响到使用算法的客户。

2

模式中的角色:       1)Context(上下文):用一个 ConcreteStrategy来配置。维护一个对 Strategy 对象的引用;       2)Strategy(策略类):定义所有支持的算法的公共接口;       3)ConcreteStrategy(具体策略类):封装了具体的算法或行为,继承 Strategy;

3

策略模式使用实例:

方法/步骤
1

打开Unity,新建一个空工程,具体如下图

2

在工程中,新建几个脚本,然后双击打开,具体如下图

3

脚本的具体代码和代码说明如下图

4

CashSuperStrategy 脚本具体内容如下:public abstract class CashSuperStrategy  {    public abstract void acceptCash (double money);}

5

CashNormalConcreteStrategy 脚本具体内容如下:using UnityEngine;public class CashNormalConcreteStrategy : CashSuperStrategy {    public override void acceptCash (double money)    {        Debug.Log ('正常收费:' + money);    }}

6

CashRebateConcreteStrategy 脚本具体内容如下:using UnityEngine;public class CashRebateConcreteStrategy : CashSuperStrategy {    private double moneyRebate = 1.0d;    public CashRebateConcreteStrategy(double rebate){        moneyRebate = rebate;    }    public override void acceptCash (double money)    {        money *= moneyRebate;        Debug.Log ('打折收费:'+ money);    }}

7

CashReturnConcreteStrategy 脚本具体内容如下:using System;using UnityEngine;public class CashReturnConcreteStrategy : CashSuperStrategy {    private double moneyCondition = 0;    private double moneyReturn = 0;    public CashReturnConcreteStrategy(double moneyCondtion, double moneyReturn){        this.moneyCondition = moneyCondtion;        this.moneyReturn = moneyReturn;    }    public override void acceptCash (double money)    {        if(money >= moneyCondition){            money = money - Math.Floor (money / moneyCondition) * moneyReturn;        }        Debug.Log ('正常收费:' + money);    }}

8

CashContext 脚本具体内容如下:public class CashContext  {    private CashSuperStrategy cashSuper;    public CashSuperStrategy CashSuper {        get {            return cashSuper;        }        set {            cashSuper = value;        }    }    public CashContext(CashSuperStrategy cashSuper){            this.cashSuper = cashSuper;    }    public void AcceptMoney(double money){        cashSuper.acceptCash (money);    }}

9

CashContext 脚本具体内容如下:using UnityEngine;public class Test : MonoBehaviour {    private CashContext cash;    // Use this for initialization    void Start () {        cash = new CashContext (new CashNormalConcreteStrategy());        cash.AcceptMoney (358);        cash.CashSuper = new CashRebateConcreteStrategy (0.9d);        cash.AcceptMoney (358);        cash.CashSuper = new CashReturnConcreteStrategy (300, 100);        cash.AcceptMoney (358);    }}

10

脚本编译正确,回到Unity界面,在场景中新建一个 GameObject,并把 Test 脚本赋给 GameObject,具体如下图

11

运行场景,控制台 Console 打印如下图

12

到此,《Unity 设计模式之 策略模式的实例介绍》讲解结束,谢谢

注意事项

您的支持,是我们不断坚持知识分享的动力,若帮到您,还请帮忙投票有得;若有疑问,请留言

推荐信息