zoukankan      html  css  js  c++  java
  • 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);
            }
        }

    结果:

  • 相关阅读:
    1.18
    人月神话读后感
    疯狂学java的第45天
    学Java的第46天
    JAVA学习日记150720
    JAVA学习日记140719
    JAVA学习日记160721
    JAVA学习日记130718
    Windows DOS窗体下Oracle 数据库的导入导出(IMP/EXP)命令
    IntelliJ IDEA自动清除没用的import
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14098575.html
Copyright © 2011-2022 走看看