shaokun305的专栏

做J2EE一流架构师 E-Mail:shaokun305@gmail.com

用户操作
[即时聊天] [发私信] [加为好友]
陈少坤ID:shaokun305
139769次访问,排名579好友0人,关注者1
shaokun305的文章
原创 155 篇
翻译 0 篇
转载 23 篇
评论 227 篇
shaokun305的公告
留言板 New
这里是我一个温馨的港湾,记录下我的生活成长和技术成长的经历,随着岁月的流逝,这里将是我的一个最美丽的回忆.
最近评论
wangbin3961:果然有效!
jinxinzhang:应该加catalina.sh里面吧

你可以在页面打印出内存看看,效果
miracle9i:非常详细 谢谢
wadefelix:当被记者问及是不是现在房地产价格太贵,已经让老百姓买不起时,汪光焘解释说,如果现在房子没有销售了,“你这个结论是可以的”,但现在还有人买,所以这个结论“不好说”。(郭少峰)
///
这样的话都敢说,这就是在为房地产商撑腰嘛,恳请总理把他撤了。
guojingDua:炒股票。买基金这篇文章怎么打不开呀。。。
文章分类
收藏
相册
稿笑图库
美女
java相关站点
CSDN
java世界
java研究组织
java解道
与java共舞
中国java
深入struts1.1
朋友的友情连接
http://blog.csdn.net/asklxf/
lxgljj
同事老朱的博客
戈壁草的博客
老康得网站
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 设计模式通俗演义(一)----中介者模式收藏

新一篇: 如何让提交表单后打开一个新窗口显示提交结果 | 旧一篇: 代码行数统计类

中介者模式是设计模式中一个比较常用的模式,他的原理比较简单,其实就是,把各个组件(对象)之间的复杂交互通讯通过其中的一个”中介者”来处理.

中介者(midiator)模式通过提供一种松耦合的方式,解决对个对象之间复杂的交换问题..在这种模式中,只有一个类彻底清楚其他类的方法,当类发生变化时,他们会通知中介者,在由中介者将改变通知其他相关的类(对象/组件).

//拿一个男人和女人通过媒人约会的例子来实现这种设计模式...:)哈哈.这就是“通俗模式“

1.明确,男人和女人如果约会,假设男方提出约会(女方提出过程类似).如果没有媒人,该过程如下:

a)男方如果想和女方约会,男方

b)首先请示自己的父母(^_^,假设是封建家庭哦...),

c)然后通知女方

d)女方需要请示女方父母.是否同意约会.

弊端:需要男方交换的对象太多,且关系复杂,当随着男女之间的交往的复杂,会涉及到更多复杂的交换,双方父母的交换也很更复杂,使得四个对象(男,女,男方家长,女方家长)关系复杂.难以控制.

模式改进:采取媒人做“中介者“-模式,将变得简单:,其中无论那一个人有什么要求,请求,只需要告诉“媒人“,至于该请求需要告诉谁,和谁交换,只有媒人知道,

//模拟代码类如下:&&&&&&:))

package meditator;

/**
 * <p>Title: 男人类</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 乐开工作室</p>
 * @author 陈少坤
 * @version 1.0
 */

public class Man {
  private Matchmaker mat; // 媒人

  public Man(Matchmaker mat) {
    this.mat=mat;
    mat.registeMan(this);//把自己在媒人那里注册(声明)
  }
  public static void main(String[] args) {

  }

  /**
   *考虑是否同意
   * @return
   */
  public boolean thinking(String says) {

    System.out.println("男人考虑:我该不该同意呢???");
    if (says.length() > 5){
      System.out.println("我同意了");
      return true;
    }
    else{
      System.out.println("我不同意.");
      return false;
    }

  }


  /**
   * 提出约会
   * 男人提出约会,只需要告诉媒人,由媒人负责跟其他人交互.
   * @param says
   */
  public void tryst(String says){
    System.out.println("男人提出约会请求,说:"+says);
    mat.doManTryst(says);
  }

}

 

package meditator;

/**
 * <p>Title: 男方家长类</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 乐开工作室</p>
 * @author 陈少坤
 * @version 1.0
 */

public class ManParent {
  private Matchmaker mat; //媒人类
  public ManParent(Matchmaker mat) {
    this.mat = mat;
    mat.registeManParent(this); //把自己在媒人那里注册(声明)
  }

  public static void main(String[] args) {
    //ManParent manParent1 = new ManParent();
  }

  /**
     *考虑是否同意
     * @return
     */
    public boolean thinking(String says) {
      System.out.println("男方父母考虑:我们做父母的该不该同意呢???");
      if (says.length() > 5){
        System.out.println("我们做父母的同意了");
        return true;
      }
      else{
        System.out.println("我们做父母的不同意.");
        return false;
      }

    }


}

/////////////////////////////////////////////////////////////

package meditator;

/**
 * <p>Title:女人类 </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 乐开工作室</p>
 * @author 陈少坤
 * @version 1.0
 */

public class Woman {
   private Matchmaker mat; // 媒人

  public Woman(Matchmaker mat) {
    this.mat=mat;
    mat.registeWoman(this); //把自己在媒人那里注册(声明)
  }
  public static void main(String[] args) {

  }

  /**
     *考虑是否同意
     * @return
     */
    public boolean thinking(String says) {
      System.out.println("女人考虑:我该不该同意呢???");
      if (says.length() > 5){
        System.out.println("我同意了");
        return true;
      }
      else{
        System.out.println("我不同意.");
        return false;
      }

    }


    /**
     * 提出约会
     *  女人提出约会,只需要告诉媒人,由媒人负责跟其他人交互.
     * @param says
     */
    public void tryst(String says){
      System.out.println("女人提出约会请求,说:"+says);
      mat.doWomanTryst(says);
    }


}

////////////////////////////////////////////////////////

package meditator;

/**
 * <p>Title: 女方家长类</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 乐开工作室</p>
 * @author 陈少坤
 * @version 1.0
 */

public class WomanParent {
  private Matchmaker mat; //媒人类
  public WomanParent(Matchmaker mat) {
    this.mat=mat;
    mat.registerWomanParent(this); //把自己在媒人那里注册(声明)
  }
  public static void main(String[] args) {
    //WomanParent womanParent1 = new WomanParent();
  }

  /**
    *考虑是否同意
    * @return
    */
   public boolean thinking(String says) {
     System.out.println("女方父母考虑:我们做父母的该不该同意呢???");
     if (says.length() > 5){
       System.out.println("我们做父母的同意了");
       return true;
     }
     else{
       System.out.println("我们做父母的不同意.");
       return false;
     }

   }


}

///////////////////////////////////////////////////////////////

package meditator;
/**
 * <p>Title:媒人类-----中介者 </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 乐开工作室</p>
 * @author 陈少坤
 * @version 1.0
 */

public class Matchmaker {
  private Man man; //男人
  private Woman woman; //女人
  private ManParent manp; //男方父母
  private WomanParent womanp; //女方父母
      Matchmaker() {
  }
  public static void main(String[] args) {
    Matchmaker matchmaker1 = new Matchmaker();
  }

  /**
   * 媒人处理男人提出的约会,
   * 男人提出约会,则只需要把该问题告诉媒人,
   * 由媒人负责去跟其女方,女方父母,男方家长交互
   * @param says
   */
  public void doManTryst(String says) {
    System.out.println("媒人开始处理约会问题开始");
    woman.thinking(says);
    manp.thinking(says);
    womanp.thinking(says);
    System.out.println("媒人处理约会问题结束,根据同意的结果做其他处理");
  }

  /**
   * 媒人处理女人提出的约会,
   * 由媒人负责去跟男方,女方父母,男方家长交互
   * @param says
   */
  public void doWomanTryst(String says) {
    System.out.println("媒人开始处理约会问题开始");
    man.thinking(says);
    manp.thinking(says);
    womanp.thinking(says);
    System.out.println("媒人处理约会问题结束,根据同意的结果做其他处理");
  }

  /**
   * 处理彩礼等其他问题.....
   * @param man
   */
  public void doOther(String says) {
    System.out.println("处理其他问题");
   man.thinking(says);
   woman.thinking(says);
   manp.thinking(says);
   womanp.thinking(says);
 }

 


//以下四个注册方法,可以理解为,男方和女方之间的通讯必须通过媒人
  /**
   * 注册男人
   * @param man
   */
  public  void registeMan(Man man){
    this.man=man;
  }

  /**
   * 注册女人
   * @param woman
   */
  public void registeWoman(Woman woman){
    this.woman=woman;
  }

  /**
   * 注册男方家长
   * @param manp
   */
  public void registeManParent(ManParent manp) {
    this.manp = manp;

  }

  /**
   *注册女方家长
   * @param womanp
   */

  public void registerWomanParent(WomanParent womanp){
    this.womanp = womanp;
  }

}

package meditator;

/**
 * <p>Title: 测试类---可以运行该类</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 乐开工作室</p>
 * @author 陈少坤
 * @version 1.0
 */

public class MatchmakerDemo {

  public MatchmakerDemo() {
  }

  public static void main(String[] args) {
    MatchmakerDemo matchmakerDemo1 = new MatchmakerDemo();
    Matchmaker mat = new Matchmaker(); //媒人出现
    Man man = new Man(mat);//男人,以媒人为建立构造参数
    Woman woman=new Woman(mat);
    ManParent manp=new ManParent(mat);
    WomanParent womanp=new WomanParent(mat);
    ////////////////
    System.out.println("///////////////////////////////////////////////////");;
    man.tryst("我想和你约会,可以吗?");
    ////////////////
    System.out.println("///////////////////////////////////////////////////");;
    woman.tryst("想和你约会");

 

 

  }

 

}

发表于 @ 2004年08月25日 16:30:00|评论(loading...)|编辑

新一篇: 如何让提交表单后打开一个新窗口显示提交结果 | 旧一篇: 代码行数统计类

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © shaokun305