zoukankan      html  css  js  c++  java
  • 设计模式之—中介者模式<Mediator Pattern>

    中介者抽象类(Mediator)定义了同事对象到中介者对象的接口

    namespace MediatorPattern.CLASS
    {
        abstract class Mediator
        {
            public abstract void Send(string message, Colleague colleague);
        }
    }
    View Code

    抽象同时类(Colleague)

    namespace MediatorPattern.CLASS
    {
        abstract class Colleague
        {
            protected Mediator mediator;
            public Colleague(Mediator mediator)
            {
                this.mediator = mediator;  //获取中介者对象
            }
        }
    }
    View Code

    具体同事类1(ConCreateColleague1)只知道自己的行为而不知道其他同事,但认识中介者

    namespace MediatorPattern.CLASS
    {
        class ConCreateColleague1:Colleague
        {
            public ConCreateColleague1(Mediator mediator)
                : base(mediator)
            { }
    
            public void Send(string message)
            {
                mediator.Send(message, this);
            }
    
            public void Notify(string message)
            {
                Console.WriteLine("同事1得到消息:" + message);
            }
        }
    }
    View Code

    具体同事类2(ConCreateColleague2)只知道自己的行为而不知道其他同事,但认识中介者

    namespace MediatorPattern.CLASS
    {
        class ConCreateColleague2:Colleague
        {
            public ConCreateColleague2(Mediator mediator)
                : base(mediator)
            { }
    
            public void Send(string message)
            {
                mediator.Send(message, this);
            }
    
            public void Notify(string message)
            {
                Console.WriteLine("同事2得到消息:" + message);
            }
        }
    }
    View Code

    具体中介者类(ConCreateMediator)认识两个同事,给他们传递信息

    namespace MediatorPattern.CLASS
    {
        class ConCreateMediator:Mediator
        {
            private ConCreateColleague1 colleague1;
            private ConCreateColleague2 colleague2;
            /// <summary>
            /// 同事对象1
            /// </summary>
            public ConCreateColleague1 Colleague1
            {
                set { colleague1 = value; }
            }
            /// <summary>
            /// 同事对象2
            /// </summary>
            public ConCreateColleague2 Colleague2
            {
                set { colleague2 = value; }
            }
    
            public override void Send(string message, Colleague colleague)
            {
                if (colleague == colleague1)
                {
                    colleague2.Notify(message);
                }
                else
                {
                    colleague1.Notify(message);
                }
            }
        }
    }
    View Code

    测试类(TestMain)同事1发的 Are you sure! ,同事2发的 Yes

    using MediatorPattern.CLASS;
    namespace MediatorPattern
    {
        class TestMain
        {
            static void Main(string[] args)
            {
                ConCreateMediator mediator = new ConCreateMediator();
                ConCreateColleague1 colleague1 = new ConCreateColleague1(mediator);
                ConCreateColleague2 colleague2 = new ConCreateColleague2(mediator);
    
                mediator.Colleague1 = colleague1;
                mediator.Colleague2 = colleague2;
    
                colleague1.Send("Are you sure !");
                colleague2.Send("Yes!");
            }
        }
    }
    View Code

    要么忍,要么狠,要么滚!
  • 相关阅读:
    毕业设计(高校网上作业提交系统)开发记录(15)
    毕业设计(高校网上作业提交系统)开发记录(14)
    毕业设计(高校网上作业提交系统)开发记录(13)
    毕业设计(高校网上作业提交系统)开发记录(12)
    毕业设计(高校网上作业提交系统)开发记录(11)
    毕业设计(高校网上作业提交系统)开发记录(10)
    毕业设计(高校网上作业提交系统)开发记录(9)
    毕业设计(高校网上作业提交系统)开发记录(8)
    Java实现沙箱测试环境支付springboot
    Java面试宝典2019
  • 原文地址:https://www.cnblogs.com/zxd543/p/3277769.html
Copyright © 2011-2022 走看看