zoukankan      html  css  js  c++  java
  • 《大话》之 中介者模式

    一.简介:

    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>
    小结:

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


  • 相关阅读:
    只出现一次的数字
    SpringBoot整合Redis
    MFC 0误差画图
    模仿.NET的序列化机制
    求最大子数组
    让CFrameWnd派生类的对象响应鼠标消息的“变态”方法
    关于chm文件和'#'的惊人发现
    CxImage学习笔记
    C++指针系列
    MFC,C++ 截屏
  • 原文地址:https://www.cnblogs.com/DoubleEggs/p/5747209.html
Copyright © 2011-2022 走看看