游戏设计模式--责任链模式

/*                     游戏设计模式--责任链模式
 *  定义:很多对象由每一个对象对其下家的引用而连接起来形成一条链。
 *        请求在这个链上传递,直到链上的某一个对象决定处理此请求。
 *        发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,
 *        这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
 * 
 *  游戏应用:游戏中的关卡系统等;其他应用:客服处理问题,请假系统等;
 * 
 */

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Responsibility : MonoBehaviour {

	
	void Start () {
        string Problem = "B问题";
        IHandle handleA = new HandleA();
        IHandle handleB= new HandleB();
        handleA.NestHandle = handleB;
        handleA.HandleDeal(Problem);

    }
	
}
/// <summary>
/// 抽象类:处理者
/// </summary>
public abstract class IHandle
{
    //下一个处理者
    protected  IHandle mNestHandle=null;
    public IHandle NestHandle
    {
        set { mNestHandle = value; }
    }
    /// <summary>
    /// 虚方法:根据条件处理问题
    /// </summary>
    /// <param name="problem">问题描述</param>
    public virtual void  HandleDeal(string problem) { }
}
public class HandleA:IHandle
{
    public override void HandleDeal(string problem)
    { 
      if(problem == "A问题")
        {
            Debug.Log("正在处理A问题");
        }
      else
        {
            if(mNestHandle!=null)
            {
                Debug.Log("不是A问题,已经移交给" + mNestHandle);
                mNestHandle.HandleDeal(problem);
            }
          
        }
    }
}
public class HandleB: IHandle
{
    public override void HandleDeal(string problem)
    {
        if (problem == "B问题")
        {
            Debug.Log("正在处理B问题");
        }
        else
        {
            if(mNestHandle !=null)
            {
                Debug.Log("不是B问题,已经移交给" + mNestHandle);
                mNestHandle.HandleDeal(problem);
            }
           
        }
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值