Patterns in SOME –Mediator

    技术2022-05-11  75

    Code in C#:   namespace Mediator_DesignPattern {      using System;        class Mediator      {          private DataProviderColleague dataProvider;          private DataConsumerColleague dataConsumer;          public void IntroduceColleagues(DataProviderColleague c1, DataConsumerColleague c2)          {               dataProvider = c1;               dataConsumer = c2;                   }                   public void DataChanged()          {               int i = dataProvider.MyData;               dataConsumer.NewValue(i);          }      }        class DataConsumerColleague      {          public void NewValue(int i)          {               Console.WriteLine("New value {0}", i);          }      }        class DataProviderColleague      {          private Mediator mediator;          private int iMyData=0;          public int MyData          {               get               {                    return iMyData;               }               set               {                    iMyData = value;               }          }          public DataProviderColleague(Mediator m)          {               mediator = m;          }            public void ChangeData()          {               iMyData = 403;                 // Inform mediator that I have changed the data               if (mediator != null)                    mediator.DataChanged();          }             }        ///<summary>      ///    Summary description for Client.      ///</summary>      public class Client      {          public static int Main(string[] args)          {                          Mediator m = new Mediator();               DataProviderColleague c1 = new DataProviderColleague(m);               DataConsumerColleague c2 = new DataConsumerColleague();               m.IntroduceColleagues(c1,c2);                 c1.ChangeData();                 return 0;          }      } }     Code in SOME:    CMediator -> CDataProviderColleague[_dataProvider],->CDataConsumerColleague[_dataConsumer]        IntroduceColleagues(CDataProviderColleague, CDataConsumerColleague)        DataChanged()        CDataConsumerColleague        NewValue(int)        CDataProviderColleague ->CMediator[_mediator]        int MyData        (CMediator)                         /* means the parameter will be assigned to _mediator*/        ChangeData()   CClient        main     CClient.main {        CMediator m.();        CDataProviderColleague c1.(_mediator=m);                      CDataConsumerColleague c2.();        m.IntroduceColleagues(_dataProvider = c1,_dataConsumer = c2);          c1.ChangeData()        {               <% if(mediator != null )%>               <%{ %>                      _mediator.DataChanged()                      {                       int i = dataProvider.MyData;                             _dataConsumer.NewValue(i)                             {                                    <% Console.WriteLine("New value {0}", i); %>                             };                      };               <%}       %>        }; }              

    最新回复(0)