博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之—中介者模式<Mediator Pattern>
阅读量:4630 次
发布时间:2019-06-09

本文共 2754 字,大约阅读时间需要 9 分钟。

中介者抽象类(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;        ///         /// 同事对象1        ///         public ConCreateColleague1 Colleague1        {            set { colleague1 = value; }        }        ///         /// 同事对象2        ///         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

转载于:https://www.cnblogs.com/zxd543/p/3277769.html

你可能感兴趣的文章
assert
查看>>
openstack安装在虚拟机上重启之后无法启动问题
查看>>
Bulk_Collect_Performance 比较
查看>>
类于对象
查看>>
灵活性是原则性基础上的灵活
查看>>
python 添加进度条
查看>>
恢复Opera11.50地址栏的下拉列表按钮
查看>>
EBS上用过的一些接口表整理信息
查看>>
ldconfig
查看>>
操作系统简介
查看>>
查看Linux系统中某目录的大小
查看>>
Git远程仓库地址变更
查看>>
PAT_B_1027 打印沙漏
查看>>
POJ-1185 炮兵阵地 动态规划+状态压缩
查看>>
NYOJ 366 D的小L
查看>>
PYTHON 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者...
查看>>
Docker 初识
查看>>
【12.16】VC++调用Word OLE进行自动化生成报表
查看>>
用Maven创建第一个web项目
查看>>
php中的抽象类(abstract class)和接口(interface)
查看>>