• 行为型设计模式之中介者模式(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     }
    中介者模式
  • 相关阅读:
    URL传递的参数是UTF-8编码,在打开的页面正常显示(GB2312)的方法
    JS windows.open打开窗口并居中
    一个tomcat如何部署多个项目运行
    redis 服务配置开机自启动
    解决端口被占用问题
    MySQL中concat以及group_concat的使用
    java 使用OpenOffice文件实现预览
    eclipse安装maven插件
    数据库三范式
    mysql 查询的字段值太长显示不全 group_concat
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4663303.html
Copyright © 2020-2023  润新知