unity,中介者模式代码
时间: 2023-04-07 09:02:39 浏览: 74
我可以回答这个问题。以下是一个简单的 Unity 中介者模式的代码示例:
```
public interface IColleague
{
void Send(string message);
void Receive(string message);
}
public class ConcreteColleagueA : IColleague
{
private Mediator mediator;
public ConcreteColleagueA(Mediator mediator)
{
this.mediator = mediator;
}
public void Send(string message)
{
mediator.Send(message, this);
}
public void Receive(string message)
{
Debug.Log("ConcreteColleagueA received message: " + message);
}
}
public class ConcreteColleagueB : IColleague
{
private Mediator mediator;
public ConcreteColleagueB(Mediator mediator)
{
this.mediator = mediator;
}
public void Send(string message)
{
mediator.Send(message, this);
}
public void Receive(string message)
{
Debug.Log("ConcreteColleagueB received message: " + message);
}
}
public class Mediator
{
private ConcreteColleagueA colleagueA;
private ConcreteColleagueB colleagueB;
public void SetColleagueA(ConcreteColleagueA colleagueA)
{
this.colleagueA = colleagueA;
}
public void SetColleagueB(ConcreteColleagueB colleagueB)
{
this.colleagueB = colleagueB;
}
public void Send(string message, IColleague colleague)
{
if (colleague == colleagueA)
{
colleagueB.Receive(message);
}
else if (colleague == colleagueB)
{
colleagueA.Receive(message);
}
}
}
```
在这个示例中,ConcreteColleagueA 和 ConcreteColleagueB 是两个同事类,它们都实现了 IColleague 接口。Mediator 是中介者类,它负责协调两个同事类之间的通信。当 ConcreteColleagueA 发送消息时,它会调用 Mediator 的 Send 方法,并将自己作为参数传递进去。Mediator 根据传入的参数判断应该将消息发送给哪个同事类,然后调用该同事类的 Receive 方法。同样的,当 ConcreteColleagueB 发送消息时,也是通过 Mediator 来实现的。
这个示例中的中介者模式可以帮助我们减少同事类之间的耦合度,使得它们更加独立和可复用。