Advertisement
yakovmonarh

Посредник (Mediator)

Sep 10th, 2019
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.40 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Threading;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7.  
  8. class Program
  9. {
  10.    static void Main(string[] args)
  11.    {
  12.     ManagerMediator mediator = new ManagerMediator();
  13.     Collegue customer = new CustomerCollegue(mediator);
  14.     Collegue programmer = new ProgrammerCollegue(mediator);
  15.     Collegue tester = new TesterCollegue(mediator);
  16.     mediator.Customer = customer;
  17.     mediator.Programmer = programmer;
  18.     mediator.Tester = tester;
  19.     customer.Send("Есть заказ, надо сделать программу");
  20.     programmer.Send("Программа сделана, надо провести тест");
  21.     tester.Send("Программа протестирована и готова к продаже");
  22.    
  23.     Console.ReadLine();
  24.    }
  25. }
  26.  
  27. abstract class Mediator
  28. {
  29.     public abstract void Send(string msg, Collegue collegue);
  30. }
  31.  
  32. abstract class Collegue
  33. {
  34.     protected Mediator mediator;
  35.    
  36.     public Collegue(Mediator mediator)
  37.     {
  38.         this.mediator = mediator;
  39.     }
  40.    
  41.     public virtual void Send(string message)
  42.     {
  43.         mediator.Send(message, this);
  44.     }
  45.    
  46.     public virtual void Notify(string message)
  47.     {
  48.         Console.WriteLine("Сообщение заказчику: " + message);
  49.     }
  50. }
  51.  
  52. class CustomerCollegue : Collegue
  53. {
  54.     public CustomerCollegue(Mediator mediator) : base(mediator)
  55.     {
  56.        
  57.     }
  58.    
  59.     public override void Notify(string message)
  60.     {
  61.         Console.WriteLine("Сообщение заказчику " + message);
  62.     }
  63. }
  64.  
  65. class ProgrammerCollegue : Collegue
  66. {
  67.     public ProgrammerCollegue(Mediator mediator) : base(mediator)
  68.     {
  69.        
  70.     }
  71.    
  72.     public override void Notify(string message)
  73.     {
  74.         Console.WriteLine("Сообщение программисту " + message);
  75.     }
  76. }
  77.  
  78. class TesterCollegue : Collegue
  79. {
  80.     public TesterCollegue(Mediator mediator) : base(mediator)
  81.     {
  82.        
  83.     }
  84.    
  85.     public override void Notify(string message)
  86.     {
  87.         Console.WriteLine("Сообщение тестеру " + message);
  88.     }
  89. }
  90.  
  91. class ManagerMediator : Mediator
  92. {
  93.     public Collegue Customer{get;set;}
  94.     public Collegue Programmer{get;set;}
  95.     public Collegue Tester{get;set;}
  96.    
  97.     public override void Send(string msg, Collegue collegue)
  98.     {
  99.         if(Customer == collegue)
  100.             Programmer.Notify(msg);
  101.         else if(Programmer == collegue)
  102.             Tester.Notify(msg);
  103.         else if(Tester == collegue)
  104.             Customer.Notify(msg);
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement