中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,中介者模式又称为调停者模式。
模式角色与结构:
示例代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CSharp.DesignPattern.MediatorPattern { class Program { static void Main(string[] args) { } } // 抽象中介者 abstract class Mediator { protected List<Colleague> colleagues; // 用于存储同事对象 public void Register(Colleague colleague) { colleagues.Add(colleague); } public abstract void Operation(); } class ConcreteMediator : Mediator { public override void Operation() { // ... ((Colleague)colleagues[0]).ToString(); // 通过中介者调用同事类的方法 // ... } } // 抽象同事类 abstract class Colleague { protected Mediator mediator; // 维持一个抽象中介者的引用 public Colleague(Mediator mediator) { this.mediator = mediator; } public abstract void Method1(); // 声明自身方法,处理自己的行为,共中介者调用 // 定义依赖方法,与中介者进行通信 public void Method2() { mediator.Operation(); } } class ConcreteColleague : Colleague { public ConcreteColleague(Mediator mediator) : base(mediator) { } public override void Method1() { // ... } } }