<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
    用一個中介對象來封裝一系統的對象交互。中介者使各對象不需要顯示地相互引用,從而使其耦合松散,而可以獨立改變他們之間的效死.
    組成部份:
    1.中介者
    2.具體中介者
    3.同事
    4.具體同事
    組成部份之間的關系:

    例子:
    1.人
    package simpleMediator;

    /**
     * <ul>
     * <li>Title:[Person]</li>
     * <li>Description: [人(抽象同事)]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-3]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
    @version 1.0
     
    */

    public abstract class Person
    {
        
    /** 姓名 */
        
    private String name;
        
        
    /** 條件 */
        
    private int condition;
        
        
    /** 中介者(不管男孩還是女孩,都需要知道中介者,通過中介者去找對象) */
        
    private Mediator mediator;
        
        
    /**
         * <ul>
         * <li>Description:[構造方法]</li>
         * <ul>
         * 
         * 
    @param name
         * 
    @param condition
         * 
    @param mediator
         
    */

        
    public Person(String name, int condition, Mediator mediator)
        
    {
            
    this.name = name;
            
    this.condition = condition;
            
    this.mediator = mediator;
        }

        
        
    /**
         * <ul>
         * <li>Description:[找對象]</li>
         * <li>Created by [Huyvanpull] [2011-8-3]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
         * 
    @param person
         * 
    @return
         
    */

        
    public abstract boolean findPartner(Person person);
        
        
    public String getName()
        
    {
            
    return name;
        }

        
        
    public void setName(String name)
        
    {
            
    this.name = name;
        }

        
        
    public int getCondition()
        
    {
            
    return condition;
        }

        
        
    public void setCondition(int condition)
        
    {
            
    this.condition = condition;
        }

        
        
    public Mediator getMediator()
        
    {
            
    return mediator;
        }

        
        
    public void setMediator(Mediator mediator)
        
    {
            
    this.mediator = mediator;
        }

    }


    2.男孩
    package simpleMediator;

    public class Boy extends Person
    {   
        
    /**
         * <ul>
         * <li>Description:[構造方法]</li>
         * <ul>
         * 
         * 
    @param name
         * 
    @param condition
         * 
    @param mediator
         
    */

        
    public Boy(String name, int condition, Mediator mediator)
        
    {
            
    super(name, condition, mediator);
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see simpleMediator.Person#findPartner(simpleMediator.Person)
         
    */

        
    public boolean findPartner(Person person)
        
    {
            System.out.println(
    "boy try to find girl.");
            
    this.getMediator().findPartner(person);
            
    return false;
        }

        
    }


    3.女孩
    package simpleMediator;

    public class Girl extends Person
    {
        
        
    /**
         * <ul>
         * <li>Description:[構造方法]</li>
         * <ul>
         * 
         * 
    @param name
         * 
    @param condition
         * 
    @param mediator
         
    */

        
    public Girl(String name, int condition, Mediator mediator)
        
    {
            
    super(name, condition, mediator);
        }

        
        
    /*
         * (non-Javadoc)
         * 
         * @see simpleMediator.Person#findPartner(simpleMediator.Person)
         
    */

        
    public boolean findPartner(Person person)
        
    {
            System.out.println(
    "girl try to find boy.");
            
    this.getMediator().findPartner(person);
            
    return false;
        }

        
    }


    4.婚介
    package simpleMediator;

    /**
     * <ul>
     * <li>Title:[Mediator]</li>
     * <li>Description: [婚姻登記]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-3]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
    @version 1.0
     
    */

    public interface Mediator
    {
        
        
    /**
         * <ul>
         * <li>Description:[男孩登記]</li>
         * <li>Created by [Huyvanpull] [2011-8-3]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
         * 
    @param boy
         
    */

        
    public void registBoy(Boy boy);
        
        
    /**
         * <ul>
         * <li>Description:[女孩登記]</li>
         * <li>Created by [Huyvanpull] [2011-8-3]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
         * 
    @param girl
         
    */

        
    public void registGirl(Girl girl);
        
        
    /**
         * <ul>
         * <li>Description:[介紹對象]</li>
         * <li>Created by [Huyvanpull] [2011-8-3]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
         * 
    @param person
         * 
    @return
         
    */

        
    public boolean findPartner(Person person);
    }


    5.具體婚介
    package simpleMediator;

    /**
     * <ul>
     * <li>Title:[RedSunMediator]</li>
     * <li>Description: [紅日婚介所]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-3]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
    @version 1.0
     
    */

    public class RedSunMediator implements Mediator
    {
        
    /** 男孩 */
        
    private Boy boy;
        
        
    /** 女孩 */
        
    private Girl girl;
        
        
    /* (non-Javadoc)
         * @see simpleMediator.Mediator#registBoy(simpleMediator.Boy)
         
    */

        
    public void registBoy(Boy boy)
        
    {
            
    this.boy = boy;
        }

        
        
    /* (non-Javadoc)
         * @see simpleMediator.Mediator#registGirl(simpleMediator.Girl)
         
    */

        
    public void registGirl(Girl girl)
        
    {
            
    this.girl = girl;
        }

        
        
    // 根據各自的條件匹配
        public boolean findPartner(Person person)
        
    {
            
    if (person instanceof Boy)
            
    {
                
    this.boy = (Boy) person;
            }

            
    else
            
    {
                
    this.girl = (Girl) person;
            }

            
            
    boolean success = this.boy.getCondition() == this.girl.getCondition();
            
            StringBuffer info 
    = new StringBuffer();
            info.append(
    this.boy.getName());
            info.append(
    " vs ");
            info.append(
    this.girl.getName());
            info.append(
    " is partner: " );
            info.append(success);
            
            System.out.println(info);
            
            
    return success;
        }

    }


    6.測試
    package simpleMediator;

    public class Test
    {
        
    public static void main(String[] args)
        
    {
            
    // 紅日婚介所開張
            Mediator mediator = new RedSunMediator();
            
            
    // 一個名為小趙的男孩,條件為2500
            Boy xiaoZhao = new Boy("小趙"2500, mediator);
            mediator.registBoy(xiaoZhao);
            
            
    // 一個名為小錢的女孩,條件為為2500
            Girl xiaoQian = new Girl("小錢"2500, mediator);
            mediator.registGirl(xiaoQian);
            
            
    // 如果條件符合,則partner成立
            xiaoZhao.findPartner(xiaoQian);
            
            
    // 一個名為lanlan的女孩,條件為90
            Girl xiaosun = new Girl("小孫"5000, mediator);
            mediator.registGirl(xiaosun);
            xiaosun.findPartner(xiaoZhao);
        }

    }

    總結
         中介者模式很容易在系統中應用,也很容易在系統中誤用。當系統出現了“多對多”交互復雜的對象群,不要急于使用中介者模式,而要先反思你的系統在設計上是不是合理。
    posted on 2011-08-03 17:04 HUIKK 閱讀(283) 評論(0)  編輯  收藏 所屬分類: Design Patterns
    主站蜘蛛池模板: 亚洲成av人片天堂网无码】| 色播亚洲视频在线观看| 最新精品亚洲成a人在线观看| 久久久久亚洲AV综合波多野结衣| 亚洲狠狠婷婷综合久久久久 | 亚洲精品NV久久久久久久久久| 中文亚洲成a人片在线观看| 亚洲av永久无码精品漫画| 亚洲乱码日产精品BD在线观看| 美女视频黄免费亚洲| 特级aaaaaaaaa毛片免费视频| 国产一级a毛一级a看免费人娇| 91福利视频免费观看| 噜噜嘿在线视频免费观看| 亚洲AV无码一区二三区 | xvideos亚洲永久网址| 国产亚洲人成网站观看| 亚洲成a人片在线不卡| a一级爱做片免费| 亚洲精品在线免费看| 又大又硬又爽免费视频| 亚洲AV无码不卡在线播放| 亚洲男人的天堂久久精品| 一区二区三区免费精品视频| 亚洲视频免费播放| www国产亚洲精品久久久日本| 亚洲国产老鸭窝一区二区三区 | 无码免费又爽又高潮喷水的视频 | 日本免费人成视频在线观看| 美女被免费视频网站a国产| 亚洲av无码一区二区三区网站 | 亚洲精品美女久久久久| 日韩亚洲人成在线综合| 日韩精品人妻系列无码专区免费 | 四虎国产精品成人免费久久| 最近中文字幕免费2019| 亚洲另类激情专区小说图片| 亚洲国产精品成人精品小说 | 色妞www精品视频免费看| 亚洲大片免费观看| 亚洲综合色自拍一区|