class Colleague
{
protected Mediator mediator;
public Colleague(Mediator mediator)
{
this.mediator = mediator;
}
}
abstract class Mediator
{
public abstract void Send(string message, Colleague colleague);
}
class ConcreteColleague1 : Colleague
{
public ConcreteColleague1(Mediator mediator) : base(mediator)
{
}
public void Send(string message)
{
mediator.Send(message, this);
}
public void Notify(string message)
{
Console.WriteLine($"同事1得到消息:{message}");
}
}
class ConcreteColleague2 : Colleague
{
public ConcreteColleague2(Mediator mediator) : base(mediator)
{
}
public void Send(string message)
{
mediator.Send(message, this);
}
public void Notify(string message)
{
Console.WriteLine($"同事2得到消息:{message}");
}
}
class ConcreteMediator : Mediator
{
private ConcreteColleague1 colleague1;
private ConcreteColleague2 colleague2;
public override void Send(string message, Colleague colleague)
{
if(colleague==colleague1)
{
colleague2.Notify(message);
}
else
{
colleague1.Notify(message);
}
}
public ConcreteColleague1 Colleague1 { get => colleague1; set => colleague1 = value; }
public ConcreteColleague2 Colleague2 { get => colleague2; set => colleague2 = value; }
}
class Program
{
static void Main(string[] args)
{
ConcreteMediator mediator = new ConcreteMediator();
ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator);
ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator);
mediator.Colleague1 = colleague1;
mediator.Colleague2 = colleague2;
colleague1.Send("你好啊!colleague2");
colleague2.Send("你好,colleague1");
}
}