中介者模式簡介
所謂中介者模式就是用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用痒钝,從而使其耦合松散秉颗,而且可以獨立地改變它們之間的交互。
簡單代碼例子
- 玩家和NPC互受傷害送矩。
常規(guī)寫法
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();
}
}
}