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
>>: 【C#】Structural Patterns Flyweight Mode
程序异常 除数为0的错误 异常处理程序try except 档案不存在的错误FileNotFoun...
记得在日本的一本 SEO 书写了一个很生动的范例,一间公司业绩要成长,取决於业务员的数量,而网站的...
前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...
coroutines 在用使用java写android的时候,我们要连接api的时候大多使用rxja...
互动事件顾名思义,就是前後端之间的互动啦!现在要从页面上触发後端的 Function 不用在自己写 ...