这个模式的定义就很简单用一个中介对象来封装一系列的对象交互。中介者

使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变

它们之间的交互。好处是什么呢?很显然就是为了降低复杂度.使的原本使多

对多关系.现在变成了1对多关系.因为所有对象都只和Mediator中介者单线联

系.而中介者隐士的包含了对象之间的关系.下面还是举个简单的事例.如:小王

要把稿件交给小李.小李要把书籍交给小张.小张要把笔交给小王.并且小张要

把随身听交给小李.这样如果对象和对象之间交互会显得很复杂.如果他们只

是把物品交给一个中介人.在由中介人负责派分物品.这样每个人都只和中介人

建立联系.而中介人维护对象之间的关系.

//还是从接口开始
public interface IPerson{
   string Name(get;);
   ArrayList Article {get;set;}//每个人可能有多个物品
}

public class Wang : IPerson{
   private string name="Wang";
   private ArrayList article;

public string Name{
      get{return name;}
   }

public ArrayList Article{
       get{return article;}
       set{article=value;}
   }
  //.......做其他的事情
}

public class Zhang : IPerson{
   private string name="Zhang";
   private ArrayList article;

public string Name{
      get{return name;}
   }

public ArrayList Article{
       get{return article;}
       set{article=value;}
   }
  //.......做其他的事情
}

public class Lee:IPerson{
   private string name="Lee";
   private ArrayList article;

public string Name{
      get{return name;}
   }

public ArrayList Article{
       get{return article;}
       set{article=value;}
   }
  //.......做其他的事情
}

//中介人
public interface IMediator {
 //交换物品
   void SweapArticle(IPerson p1,IPerson p2,object at);
}

public class ConcreteMediator : IMediator {
  
   public  void SweapArticle(IPerson p1,IPerson p2,object at){
          p1.Article.Add(p2.Article[at]);
          p2.Article.Remove(at);
   }
}

//实际调用

public class Client
    {
        public static int Main(string[] args)
        {           
   IMediator m = new ConcerteMediator();
   IPerson wang=new Wang();
                        IPerson zhang=new Zhang();
                        IPerson Lee=new Lee();

wang.Article.Add("稿件");
                        zhang.Article.Add("书籍");
                        lee.Article.Add("笔");
                        lee.Article.Add("随身听");

//交换开始
                        m.SweapArticle(wang,zhang,"稿件");
                        m.SweapArticle(zhang,lee,"书籍");                                                           m.SweapArticle(lee,zhang,"笔");
                        m.SweapArticle(lee,wang,"随身听");             
            return 0;
        }
    }
}

这个模式的主要目的就是把原本是多对多的关系.变为一对多
要参考我写的所有设计模式,请参考如下链接 http://www.csdn.net/Develop/list_article.asp?author=yarshray&myclassid=11564&myclassName

至此.常用的20种设计模式已经全部介绍完毕.另外 的设计模式Interpreter 主要用来对语言的分析,很少用.Iterator设计模式基本可以用IList接口中的Indexof方法取代所以不在详细介绍.希望我这三天的努力.可以对大家有点帮助.

中介者(Mediator)相关推荐

  1. 设计模式学习笔记——中介者(Mediator)模式

    设计模式学习笔记--中介者(Mediator)模式 @(设计模式)[设计模式, 中介者模式, Mediator] 设计模式学习笔记中介者Mediator模式 基本介绍 中介者案例 类图 实现代码 Me ...

  2. java mediator_Java 实现中介者(Mediator)模式

    类图 public interface IMediator { public void createMediator(); public void work(); } /** * 中介.调节实际上需要 ...

  3. 中介者(Mediator)模式

    文章目录 中介者(Mediator)模式 1. 意图 2. 别名 3. 动机 4. 适用性 5. 结构 6. 参与者 7. 协作 8. 效果 9. 实现 10. 代码示例 11.已知应用 12. 相关 ...

  4. 设计模式--中介者(Mediator)模式

    模式定义 用一个中介对象来封装(封装变化)一系列的对象交互,中介者使各对象不需要显示的相互引用,从而使其耦合松散(管理变化),而且可以独立地改变它们之间的交互 类图 应用场景 当多个对象互相关联交互并 ...

  5. 设计模式-中介者Mediator深思(对象/模块/进程通信)

    概述 记得初识设计模式时,有本书称她们都是选美比赛的漂亮妞,Here,借用下其中的语调,近来,被"其貌不扬"的中介者小姐的魅力深深吸引,我们来谈点别的.早些时候读GOF设计模式,就 ...

  6. C++之中介者(Mediator)模式

    0. 简介 中介者模式和命令模式类似,都有着一层中间层来作为沟通的渠道,只是中介者模式使用了Mediator来实现实现更新函数changed.而在命令模式中使用Invoke作为最上层,用于管理具体类的 ...

  7. php中介模式,中介者模式(Mediator pattern)详解及PHP实现

    中介者模式是一种行为型模式,它包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用,从而使它们可以松散偶合.当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用,保证这些作用可 ...

  8. 设计模式理解:中介者模式(Mediator)

    中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护. 两个类或者多个类之间存在相 ...

  9. Mediator 中介模式

    定义 中介模式又称为调停者模式或仲裁者模式,主要是仲裁和中介的作用,帮助其它类之间进行通信,降低多个对象和类之间的通信复杂性. 在中介模式之中,我们要明确两个概念,那就是(Mediator)和(Col ...

最新文章

  1. .NET六大剑客:栈、堆、值类型、引用类型、装箱和拆箱
  2. 小程序制作预算_小程序商城制作多少钱
  3. “此网站使用的安全性配置已过时,这可能会导致您的信息(例如密码、消息或信用卡卡号)”
  4. Vue.js生命周期
  5. java 合并算法思想_Java实现合并两个有序序列算法示例
  6. eclipse启动tomcat无法访问的解决方法(转)
  7. 红米note2 解账号锁、救砖 (附刷机包,工具)
  8. 随机指标计算机程序,MACD/随机指标组合应用分析
  9. 根轨迹 matlab 怎么画一半儿,现有 1020 个西瓜,第一天卖一半多两个,以后每天都卖剩下的一半多两个,编程计算几天后能把所有西瓜都卖完? 请编程实现_学小易找答案...
  10. Linux主目录文件夹英文,中文Ubuntu主目录下的文件夹改回英文
  11. 硬核分享|探针盒子?不用怕!手把手教你打造专属隐私保护工具
  12. 苹果拼图软件测试,视频照片拼图APP
  13. 晶体(crystal)和晶振(oscillator)的区别
  14. LeetCode 19 螺旋矩阵
  15. 高新技术八大领域详细分类
  16. php iphone壁纸,经典!iPhone 8全套超高清壁纸出炉
  17. 某博搜索话题采集分析Python爬虫
  18. 面试金典02(Python)—— 判定是否互为字符重排(简单)
  19. Java练习demo 20190402 优惠券扣减
  20. 【ZYNQ】Petalinux 编译工程报错

热门文章

  1. MySQL数据库修改表某一列数据(一整列)
  2. 多目标优化算法:多目标变色龙群优化算法MOCSA(提供MATLAB源码)
  3. Android 点击生成二维码
  4. iOS11缩小界面导航栏与标签栏异常的问题
  5. win10给扩展屏设置单独的壁纸(win10自带这个功能)
  6. 搜狗输入法皮肤编辑器(“用户账户不存在: 解压缩失败 皮肤解压失败:skin.ini不存在……”)
  7. c#安卓连接sqlserver_C#手把手教你玩微信自动化
  8. 分享几款DIY的手表
  9. C#笔试题面试题锦集
  10. Spark 第三讲 Scala数组与函数基础