Patterns in SOME –Mediator

 
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); %>
                            };
                     };
              <%}       %>
       };
}
      
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值