C# 设计模式(18)中介者模式
中介者模式
1.解决对象交互问题
代码实现:
部门员工类:
namespace MediatorPattern
{
public abstract class BasePerson
{
public string Name { get; set; }
public abstract void SendMessage(string message, BasePerson personTo);
public abstract void GetMessage(string message, BasePerson personFrom);
}
public class Employee:BasePerson
{
public override void SendMessage(string message, BasePerson personTo)
{
Console.WriteLine($"员工:{personTo.Name},说:{message}");
personTo.GetMessage(message,this);
}
public override void GetMessage(string message, BasePerson personFrom)
{
Console.WriteLine($"员工:{personFrom.Name},收到:{message}");
}
}
public class Manager:BasePerson
{
public override void SendMessage(string message, BasePerson personTo)
{
Console.WriteLine($"经理:{personTo.Name},说:{message}");
personTo.GetMessage(message, this);
}
public override void GetMessage(string message, BasePerson personFrom)
{
Console.WriteLine($"经理:{personFrom.Name},收到:{message}");
}
}
}
中介者:
namespace MediatorPattern.Mediator
{
public class BaseMediator
{
public string Name { get; set; }
private readonly List<BasePerson> _personList = new List<BasePerson>();
public void AddPerson(BasePerson person)
{
_personList.Add(person);
}
public void SendMessage(string message, BasePerson personTo)
{
Console.WriteLine($"{personTo.Name},说:{message}");
foreach (var basePerson in _personList)
{
basePerson.GetMessage(message,basePerson);
}
}
}
}
代码调用:
class Program
{
static void Main(string[] args)
{
Manager manager = new Manager()
{
Name = "Boss"
};
Employee employee1 =new Employee()
{
Name = "张三"
};
Employee employee2 = new Employee()
{
Name = "李四"
};
Employee employee3 = new Employee()
{
Name = "王五"
};
Employee employee4 = new Employee()
{
Name = "赵六"
};
BaseMediator baseMediator = new BaseMediator();
baseMediator.AddPerson(manager);
baseMediator.AddPerson(employee1);
baseMediator.AddPerson(employee2);
baseMediator.AddPerson(employee3);
baseMediator.AddPerson(employee4);
baseMediator.SendMessage("9点公司开会",manager);
}
}
结果:


浙公网安备 33010602011771号