public ConcreteMediator(ColleagueOne colleagueOne, ColleagueTwo colleagueTwo) { this.ColleagueOne = colleagueOne; this.ColleagueOne.SetMediator(this); this.ColleagueTwo = colleagueTwo; this.ColleagueTwo.SetMediator(this); }
static void Main(string[] args) { // The client code. ColleagueOne component1 = new ColleagueOne(); ColleagueTwo component2 = new ColleagueTwo(); new ConcreteMediator(component1, component2); Console.WriteLine("Client triggers operation A."); component1.DoA(); Console.WriteLine(); Console.WriteLine("Client triggers operation D."); component2.DoD(); }
//LD_MEDIATOR_000 public static void RunMediatorDesignPattern() { Mediator lucaMediator = new Mediator(); ColleagueOne c1 = new ColleagueOne(lucaMediator); //LD creation of concrete instance of "Coleague", need to pass "Mediator" instance lucaMediator.c1 = c1; //LD set "c1" in concrete "Mediator" instance ColleagueTwo c2 = new ColleagueTwo(lucaMediator); lucaMediator.c2 = c2; ColleagueThree c3 = new ColleagueThree(lucaMediator); lucaMediator.c3 = c3; //LD test of "Mediator" logic c1.Send("msg001"); c2.Send("msg002"); }