中介者模式简介
所谓中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
简单代码例子
- 玩家和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();
}
}
}