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); } }
结果: