zoukankan      html  css  js  c++  java
  • 行为型设计模式之中介者模式(Mediator)

    结构
    意图 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
    适用性
    • 一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
    • 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
    • 想定制一个分布在多个类中的行为,而又不想生成太多的子类。
     1 using System;
     2 
     3     class Mediator 
     4     {
     5         private DataProviderColleague dataProvider;
     6         private DataConsumerColleague dataConsumer;
     7         public void IntroduceColleagues(DataProviderColleague c1, DataConsumerColleague c2)
     8         {
     9             dataProvider = c1;
    10             dataConsumer = c2;            
    11         }
    12         
    13         public void DataChanged()
    14         {
    15             int i = dataProvider.MyData;
    16             dataConsumer.NewValue(i);
    17         }
    18     }
    19 
    20     class DataConsumerColleague 
    21     {
    22         public void NewValue(int i)
    23         {
    24             Console.WriteLine("New value {0}", i);
    25         }
    26     }
    27 
    28     class DataProviderColleague
    29     {
    30         private Mediator mediator;
    31         private int iMyData=0;
    32         public int MyData 
    33         {
    34             get 
    35             {
    36                 return iMyData;
    37             }
    38             set 
    39             {
    40                 iMyData = value;
    41             }
    42         }
    43         public DataProviderColleague(Mediator m)
    44         {
    45             mediator = m;
    46         }
    47 
    48         public void ChangeData()
    49         {
    50             iMyData = 403;
    51 
    52             // Inform mediator that I have changed the data
    53             if (mediator != null)
    54                 mediator.DataChanged();    
    55         }        
    56     }
    57 
    58     /// <summary>
    59     ///    Summary description for Client.
    60     /// </summary>
    61     public class Client
    62     {
    63         public static int Main(string[] args)
    64         {            
    65             Mediator m = new Mediator();
    66             DataProviderColleague c1 = new DataProviderColleague(m);
    67             DataConsumerColleague c2 = new DataConsumerColleague();
    68             m.IntroduceColleagues(c1,c2);
    69 
    70             c1.ChangeData();
    71 
    72             return 0;
    73         }
    74     }
    中介者模式
  • 相关阅读:
    异地多活(异地双活)实践经验
    申诉受理
    申诉受理
    关于数据采集需求的讨论帖
    Http压测工具wrk使用指南
    设计爬虫Hawk背后的故事
    APP接口版本兼容的问题
    .net点选验证码实现思路分享
    央企晒年薪 现在终于有机会看到了_青新闻__中国青年网
    蘑菇街电商交易平台服务架构及改造优化历程(含PPT)
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4663303.html
Copyright © 2011-2022 走看看