【C#】Behavioral Patterns Mediator Mode

The Mediator design pattern defines an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.


简单来说~ 中介者模式封装一个类(Mediator)~ 将Mediator中的两个对像进行互动~

换句话说~ Mediator促进两个对象之间的鬆散~ 并允许使用它来改变它们两个互动方式~


学习目标: 中介者模式的概念及实务

学习难度: ☆☆☆


using System;namespace ConsoleApp1{    public abstract class Mediator //抽象中介者    {        public abstract void Send(string message, Player player); //抽象发送方法(讯息、Player)    }    public class ConcreteMediator : Mediator //实体中介者 (让两个对象物件进行交互)    {        ConcretePlayer1 player1; //实体玩家1        ConcretePlayer2 player2; //实体玩家2        public ConcretePlayer1 Player1 //建构实体玩家1        {            set { player1 = value; }        }        public ConcretePlayer2 Player2 //建构实体玩家2        {            set { player2 = value; }        }        public override void Send(string message, Player player) //建构实体发送方法        {            if (player == player1) //当player1传讯息            {                player2.Notify(message); //player2收到通知            }            else            {                player1.Notify(message); //player1收到通知            }        }    }    public abstract class Player //抽象玩家    {        protected Mediator mediator; //定义中介者        // Constructor        public Player(Mediator mediator) //建构Player,让Player能有中介者的parameter        {            this.mediator = mediator;        }    }    public class ConcretePlayer1 : Player //实体玩家1    {        //建构实体玩家1,让它能接受mediator,然后mediator的定义继承抽象类        public ConcretePlayer1(Mediator mediator) : base(mediator)        {        }        //建构发送讯息的实体方法        public void Send(string message)        {            mediator.Send(message, this); //从中介者送..        }        //建构接收讯息的实体方法        public void Notify(string message)        {            Console.WriteLine("Player1 gets message: " + message);        }    }    public class ConcretePlayer2 : Player //实体玩家2    {        //建构实体玩家2,让它能接受mediator,然后mediator的定义继承抽象类        public ConcretePlayer2(Mediator mediator) : base(mediator)        {        }        //建构发送讯息的实体方法        public void Send(string message)        {            mediator.Send(message, this); //从中介者送..        }        //建构接收讯息的实体方法        public void Notify(string message)        {            Console.WriteLine("Player2 gets message: " + message);        }    }    public class MainProgram    {        public static void Main(string[] args)        {            //实体化中介者            ConcreteMediator mediator = new ConcreteMediator();            //实体化player1、player2,并将中介者塞入            ConcretePlayer1 player1 = new ConcretePlayer1(mediator);            ConcretePlayer2 player2 = new ConcretePlayer2(mediator);            mediator.Player1 = player1;            mediator.Player2 = player2;            player1.Send("How are you?");            player2.Send("Fine, thanks");        }    }}

参考资料:

https://www.dofactory.com/net/mediator-design-pattern


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章