返回

中介者模式

中介者模式简介

所谓中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

简单代码例子

  • 玩家和NPC互受伤害。 常规写法
public class NPC : MonoBehaviour
{
    public void ReduceBlood()
    {

    }
    public void CaculateBlood(Transform charactor)
    {
        float tmpDistance = Vector3.Distance(transform.position, charactor.position);
        if (tmpDistance < 10)
        {
            ReduceBlood();
        }
    }
}

public class Charactor : MonoBehaviour
{
    public void ReduceBlood()
    {

    }
    public void CaculateBlood(Transform NPC)
    {
        float tmpDistance = Vector3.Distance(transform.position, NPC.position);
        if (tmpDistance < 10)
        {
            ReduceBlood();
        }
    }
}

中介者模式写法

public class ActorBase : MonoBehaviour
{
    public virtual void ReduceBlood()
    {

    }
}
public class NPCTwo : ActorBase
{
    public override void ReduceBlood()
    {

    }
}
public class MainCharactor : ActorBase
{
    public override void ReduceBlood()
    {

    }
}
public class TeachMiddle : MonoBehaviour
{    MainCharactor mainPlayer;
    NPCTwo nps;

    public void CaculateBlood(ActorBase attacked, ActorBase attack)
    {
        float tmpDistance = Vector3.Distance(attacked.transform.position, attack.transform.position);
        if (tmpDistance < 10)
        {
            attacked.ReduceBlood();
        }
    }
}
Licensed under CC BY-NC-SA 4.0
0