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);
        }
    }

结果:

 

posted @ 2020-12-07 18:12  NiKaFace  阅读(231)  评论(0编辑  收藏  举报