中介者(Mediator)

原创 2003年07月16日 08:13:00

 

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

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

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

对多关系.现在变成了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方法取代所以不在详细介绍.希望我这三天的努力.可以对大家有点帮助.

我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)

假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片。但是我们不能把所有的功能罗列到一个tab上,虽...
  • LCL_data
  • LCL_data
  • 2013年07月27日 14:15
  • 6697

设计模式之中介者模式---Mediator Pattern

模式的定义中介者模式定义如下:Define an object that encapsulates how a set of objects interact.Mediator promotes lo...
  • hfreeman2008
  • hfreeman2008
  • 2016年08月09日 09:22
  • 848

浅谈JAVA设计模式之——中介者模式(Mediator)

一、概述 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 二、适用性 1.一组对象以定义良好但是复杂的方式进行通信。产生...
  • l1028386804
  • l1028386804
  • 2015年05月09日 12:43
  • 1557

Facade与Mediator模式的区别

http://www.cnblogs.com/sweetdream/archive/2005/12/19/299983.html 门面(Facade)模式和中介者(Mediator)模式有着...
  • caolaosanahnu
  • caolaosanahnu
  • 2014年02月21日 23:27
  • 1175

中介者模式(Mediator Pattern)

定义 一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。...
  • u014161864
  • u014161864
  • 2015年01月20日 21:41
  • 2389

Mediator 中介者模式

package com.lonton.designpatterns; interface IMediator { public void ask(); public void answer()...
  • XB554790401
  • XB554790401
  • 2014年08月11日 10:40
  • 528

中介者模式(Mediator)

10.1  场景问题 10.1.1  如果没有主板 大家都知道,电脑里面各个配件之间的交互,主要是通过主板来完成的(事实上主板有很多的功能,这里不去讨论)。试想一下,如果电脑里面没有主板,...
  • u013019926
  • u013019926
  • 2013年12月16日 09:19
  • 894

中介者(Mediator)模式

应用程序,无论其大小,都是由一些单个对象所组成。所有这些对象需要一种方式来实现相互通信,而这种通信在一定程度上不降低可维护性,也不损坏那种安全的改变部分应用程序而不会破坏其余部分的能力。随着应用程序的...
  • vuturn
  • vuturn
  • 2015年10月25日 16:17
  • 422

22、中介者模式(Mediator)

22、中介者模式(Mediator) 中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模...
  • mixiu888
  • mixiu888
  • 2017年12月12日 09:36
  • 28103

中介者模式(Mediator)

@@@模式定义: 用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其松散耦合, 而且可以独立地改变他们之间的交互。 @@@练习示例:  使用电脑来看电...
  • jinfengmusic
  • jinfengmusic
  • 2013年06月16日 16:49
  • 693
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中介者(Mediator)
举报原因:
原因补充:

(最多只允许输入30个字)