Unity---游戏设计模式(14)之责任链模式




概述参考请看 参考博客

1、责任链模式原型

模式原型代码

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

public class Client : MonoBehaviour
{
    private void Start () {
        char problem = 'C';

        IResponseHandler handlerA = new ResponseHandlerA();
        IResponseHandler handlerB = new ResponseHandlerB();
        IResponseHandler handlerC = new ResponseHandlerC();

        //设置责任链
        handlerA.SetNextHandler(handlerB).SetNextHandler(handlerC);
        handlerA.Handle(problem);
	}
}

/// <summary>
/// 抽象责任链类
/// </summary>
public abstract class IResponseHandler
{
    protected IResponseHandler mNextHandler;
    public IResponseHandler NextHandler { get { return mNextHandler; } }

    public abstract void Handle(char problem);

    public IResponseHandler SetNextHandler(IResponseHandler handler)
    {
        mNextHandler = handler;
        return mNextHandler;
    }
}

public class ResponseHandlerA : IResponseHandler
{
    public override void Handle(char problem)
    {
        if (problem == 'A')
        {
            Debug.Log("HandlerA处理了A问题");
        }
        else
        {
            if (mNextHandler != null)
            {
                mNextHandler.Handle(problem);
            }
        }
    }
}
public class ResponseHandlerB : IResponseHandler
{
    public override void Handle(char problem)
    {
        if (problem == 'B')
        {
            Debug.Log("HandlerB处理了B问题");
        }
        else
        {
            if (mNextHandler != null)
            {
                mNextHandler.Handle(problem);
            }
        }
    }
}
public class ResponseHandlerC : IResponseHandler
{
    public override void Handle(char problem)
    {
        if (problem == 'C')
        {
            Debug.Log("HandlerC处理了C问题");
        }
        else
        {
            if (mNextHandler != null)
            {
                mNextHandler.Handle(problem);
            }
        }
    }
}

2、责任链模式实例

游戏中应用:关卡系统。

3、责任链模式优缺点

优点

  1. 降低耦合杜,实现发送者和请求者代码分离。

缺点

  1. 请求不一定百分百被接收。
  2. 系统性能会受到影响。
原文地址:https://www.cnblogs.com/Fflyqaq/p/11736548.html