编写一段中介者模式的csharp代码
时间: 2023-04-08 17:05:24 浏览: 69
好的,以下是中介者模式的C#代码示例:
```
using System;
using System.Collections.Generic;
// 抽象中介者
abstract class Mediator
{
public abstract void Send(string message, Colleague colleague);
}
// 抽象同事类
abstract class Colleague
{
protected Mediator mediator;
public Colleague(Mediator mediator)
{
this.mediator = mediator;
}
public abstract void Send(string message);
public abstract void Notify(string message);
}
// 具体中介者
class ConcreteMediator : Mediator
{
private List<Colleague> colleagues = new List<Colleague>();
public override void Send(string message, Colleague colleague)
{
foreach (Colleague c in colleagues)
{
if (c != colleague)
{
c.Notify(message);
}
}
}
public void AddColleague(Colleague colleague)
{
colleagues.Add(colleague);
}
}
// 具体同事类
class ConcreteColleagueA : Colleague
{
public ConcreteColleagueA(Mediator mediator) : base(mediator)
{
}
public override void Send(string message)
{
mediator.Send(message, this);
}
public override void Notify(string message)
{
Console.WriteLine("同事A收到消息:" + message);
}
}
class ConcreteColleagueB : Colleague
{
public ConcreteColleagueB(Mediator mediator) : base(mediator)
{
}
public override void Send(string message)
{
mediator.Send(message, this);
}
public override void Notify(string message)
{
Console.WriteLine("同事B收到消息:" + message);
}
}
// 客户端代码
class Client
{
static void Main(string[] args)
{
ConcreteMediator mediator = new ConcreteMediator();
ConcreteColleagueA colleagueA = new ConcreteColleagueA(mediator);
ConcreteColleagueB colleagueB = new ConcreteColleagueB(mediator);
mediator.AddColleague(colleagueA);
mediator.AddColleague(colleagueB);
colleagueA.Send("你好,同事B!");
colleagueB.Send("你好,同事A!");
Console.ReadKey();
}
}
```
希望这个示例能够帮助你理解中介者模式的实现。