《大话》之 中介者模式

一.简介:

1.背景:当今世界相对和平,但仍有个别地区,战乱不断,只为和平处理世界争端问题,才有了联合国的成立,说到底,联合国就和婚姻介绍所、房产销售处一样,就是一个中介

2.内容:用一个中介对象来封装一系列的对象交互。(中介者使各对象不需要要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互)。

3.图文并茂


就是文档中说的,同事1和同事2谁也不认识谁,但是他们都认识中介者,只要把自己的要求告诉中介者就行,其他的什么都不用管,说到这,我想起了老家的媒头老王,他还是很符合这个中介者条件的:

这样,正好大家可以对比着看,大家感觉是第一个好呢,还是第二个好,我自认为,如果一个正常人,没什么事,应该是会喜欢第一种的,因为什么呢?就因为我们的中介者模式的运用。

像第二种,每个姑娘分别要去找三家的小伙子,各个的问,你喜不喜欢我啊?麻烦(首先要知道每个小伙子的年龄、性格、家庭状况等等等)不说,要是被人拒绝,面子上也挂不住。(小伙子也一样,面子上更加挂不住)

而第一种呢,六个年轻人,只需要把自己的情况(年龄、性格、家庭状况等等等)写一张纸条交给老王,那剩下的工作,就要老王来完成,有老王来跑(相对的人的情况告诉男方或者女方),到时候只需要直接让中意的两个人见面,差不多就结婚,就好了,而他们六个年轻人呢,再见面之前也就是寻找对象这个行为完成之前,根本就谁也不认识谁,就更没有之前的麻烦和面子问题了,但是老王就辛苦了,所以媒婆也要拿红包的

四.实战

<span style="font-size:18px;"> abstract class MeiPo           //抽象中介者类
        {
            public abstract void Send(string message, Younger younger);         //定义 一个抽象的发送消息方法,得到年轻人对象和发送消息

        }
        abstract class Younger   //抽象年轻人类
        {
            protected MeiPo meipo;
            public Younger(MeiPo meipo)
            {
                this.meipo = meipo;
            }
        }
        class ConcreteMeiPo : MeiPo  //具体中介者类
        {
            private Girl gril;
            private Boy boy;

            public Girl girl
            {
                set { girl = value; }
            }
            public Boy boy
            {
                set { boy = value; }
            }</span>
<span style="font-size:18px;">            public override void Send(string message,Younger younger)   //重写消息的发送的方法,根据对象做出水发消息</span>
<span style="font-size:18px;"><span style="white-space:pre">	</span>    {</span>
<span style="font-size:18px;">                if(younger==girl){ girl.Notify(message);}</span>
<span style="font-size:18px;"><span style="white-space:pre">		</span>else{bou.Notify(message);}</span>
<span style="font-size:18px;">           }
        }
        class Girl : Younger
        {
            public Girl(MeiPo meipo)
                : base(meipo)
            { }
            public void Send(string message)
            {
                meipo.Send(message,this);
            }
            public void Notify(string message)
            {
                Console.WriteLine("我看到了所有男生的信息,我喜欢郑家小伙");
            }
        }
        class Boy : Younger
        {
            public Boy(MeiPo meipo)
                : base(meipo)
            { }
            public void Send(string message)
            {
                meipo.Send(message, this);
            }
            public void Notify(string message)
            {
                Console.WriteLine("我看到了所有女生的信息,我喜欢李家姑娘");
            }
        }</span>
小结:

学习了中介者模式,我们对于多对多的 处理方式上方便了很多,但是是否任何地方都能运用呢?答案当然是否定的,就我自己的认识来说。当系统中的一组对象定义非常明确但是却以发杂的方式进行联系时,我们就可以考虑一下中介者,将整一组对象给他分明确,然后抽象出一个中介来处在他们之间为他们处理,这样,思路和条例就会明确很多,还可以减少子类的数量,很是方便


原文地址:https://www.cnblogs.com/DoubleEggs/p/5747209.html