中介者模式 - 聽說你還是單身dog

1 介紹


Acey:大白呀大白你說你也老大不小了录豺,咋還是個(gè)單身dog呢。

大白:那沒辦法呀饭弓,畢竟人太帥双饥,學(xué)習(xí)太好,沒人要??弟断。

小白:別聽大白瞎說咏花,他要是帥,早就一群MM追啦,其實(shí)昏翰,老媽看他還沒有對(duì)象呀苍匆,就準(zhǔn)備去婚介所找啦??。

大白:


Acey:??????棚菊,膩害了浸踩。不過在這之前,我們來看看中介者模式统求,有助于配對(duì)成功率提高哦检碗。

大白:這.....

中介者模式:Mediator模式是行為模式的一種。在Mediator中码邻,類之間的交互通常被放到Mediator中折剃,而不同對(duì)象則通過Mediator對(duì)象和其他對(duì)象交互,Mediator起著控制器的作用像屋。

小白: 嗯嗯怕犁,??這個(gè)模式中的Mediator就是婚介所吧,不同的類就是不同的己莺。

Acey:??對(duì)呀奏甫,當(dāng)有了這個(gè)婚介所,單身dog找對(duì)象也就不用那么麻煩了凌受,比如大白扶檐,不需要再去一個(gè)又一個(gè)的去找異性,了解他們胁艰,只需要通過婚介所婚介所去處理智蝠,然后把合適的結(jié)果(適合對(duì)象)返回腾么,這樣對(duì)單身dog來說也是個(gè)好辦法,而且也降低了不同單身dog之間的耦合度杈湾。

2 實(shí)現(xiàn)


先來看看類圖

  • Mediator:中介者的抽象父類
  • ConcreteMediator:具體的中介者(婚介所)
  • Colleagur:關(guān)聯(lián)者的抽象類
  • ConcreteColleague:具體的關(guān)聯(lián)者(單身dog)

實(shí)現(xiàn)

一步:創(chuàng)建具體中介者

Mediator.class

public  class Mediator {
    private Man man;
    private Woman woman;
    
    
    //婚介所設(shè)置簡(jiǎn)單配對(duì)規(guī)則
    public void getPair(){
        if(man.getCondition().equals(woman.getCondition())){
            System.out.println(man.getName()+"和"+woman.getName()+"條件符合解虱,
            適合配對(duì)");
        }else{
            System.out.println("二人條件不符,不予配對(duì)");
        }
    }
    
    //設(shè)置兩人配對(duì)信息
    public void setPair(Man man , Woman woman){
        this.man = man;
        this.woman = woman;
    }
    
    public Man getMan() {
        return man;
    }
    public void setMan(Man man) {
        this.man = man;
    }
    public Woman getWoman() {
        return woman;
    }
    public void setWoman(Woman woman) {
        this.woman = woman;
    }
}

二步:創(chuàng)建關(guān)聯(lián)者抽象類

Person.class

//抽象類漆撞,包含基本信息
public abstract class Person {
    private String name;
    private Integer condition;
    private Mediator mediator;
    
    public Person(Mediator mediator, String name, Integer condition) {
        this.mediator = mediator;
        this.name = name;
        this.condition = condition;
    }

    //向婚介所投個(gè)人信息殴泰,具體子類實(shí)現(xiàn)
    public abstract void toMediator();
    
    
    public String getName() {
        return name;
    }

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

    public Mediator getMediator() {
        return mediator;
    }

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

    public Integer getCondition() {
        return condition;
    }

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

三步:創(chuàng)建具體的關(guān)聯(lián)者

Man.class / Woman.class

public class Man extends Person{

    public Man(Mediator mediator, String name, Integer condition) {
        super(mediator, name, condition);
    }
    
    //向婚介所投個(gè)人信息
    @Override
    public void toMediator() {
        this.getMediator().setMan(this);
        this.getMediator().getPair();
    }
    
}

public class Woman extends Person{

    public Woman(Mediator mediator, String name, Integer condition) {
        super(mediator, name, condition);
    }

    //向婚介所投個(gè)人信息
    @Override
    public void toMediator() {
        this.getMediator().setWoman(this);
        this.getMediator().getPair();
        
    }
    
}

四步:測(cè)試配對(duì)

MainClass.class

public class MainClass {
    public static void main(String[] args) {
        //創(chuàng)建婚介所
        Mediator mediator = new Mediator();
        
        //雙方信息
        Man dabai = new Man(mediator, "大白", 10000);
        
        Woman chunhua = new Woman(mediator, "春花", 5000);
        
        //婚介所配對(duì)
        mediator.setPair(dabai, chunhua);
        //配對(duì)結(jié)果
        mediator.getPair();
        
        System.out.println("---------------換個(gè)人-------------------");
        
        Woman linxuan = new Woman(mediator, "林軒", 10000);
        
        //婚介所配對(duì)
        mediator.setPair(dabai, linxuan);
        mediator.getPair();
    }
}
配對(duì)結(jié)果

如果有多個(gè)中介者的話,我們可以再寫一個(gè)中介者抽象類浮驳,讓具體中介者繼承悍汛。

Acey:在使用了Mediator模式后,我們可以避免關(guān)聯(lián)者類之間的過度耦合至会,即我們找對(duì)象的時(shí)候也要貨比三家??(不恰當(dāng))离咐,去了解每個(gè)人的信息,而有了婚介所之后,我們只需要和婚介所打交道宵蛀,從一對(duì)多到一對(duì)一昆著,這樣每個(gè)關(guān)聯(lián)者之間就更加獨(dú)立,關(guān)聯(lián)者之間的關(guān)系也更加易于理解和維護(hù)术陶。

Last

祝單身dog們迎娶白富美凑懂,走向人生巔峰。??


喜歡的話戳一下喜歡唄梧宫。
有什么建議的話希望大家能在下方回復(fù)??
上一篇:《解釋器模式 - 明天考試接谨,戳不輟進(jìn)來你自己看著辦》
下一篇:《職責(zé)鏈模式 - 為什么你的學(xué)費(fèi)比別人貴?》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祟敛,一起剝皮案震驚了整個(gè)濱河市疤坝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馆铁,老刑警劉巖跑揉,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異埠巨,居然都是意外死亡历谍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門辣垒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來望侈,“玉大人,你說我怎么就攤上這事勋桶⊥蜒茫” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵例驹,是天一觀的道長(zhǎng)捐韩。 經(jīng)常有香客問我,道長(zhǎng)鹃锈,這世上最難降的妖魔是什么荤胁? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮屎债,結(jié)果婚禮上仅政,老公的妹妹穿的比我還像新娘。我一直安慰自己盆驹,他們只是感情好圆丹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躯喇,像睡著了一般运褪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天秸讹,我揣著相機(jī)與錄音檀咙,去河邊找鬼。 笑死璃诀,一個(gè)胖子當(dāng)著我的面吹牛弧可,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播劣欢,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼棕诵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了凿将?” 一聲冷哼從身側(cè)響起校套,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牧抵,沒想到半個(gè)月后笛匙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犀变,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年妹孙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片获枝。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蠢正,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出省店,到底是詐尸還是另有隱情嚣崭,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布懦傍,位于F島的核電站有鹿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谎脯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一持寄、第九天 我趴在偏房一處隱蔽的房頂上張望源梭。 院中可真熱鬧,春花似錦稍味、人聲如沸废麻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烛愧。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怜姿,已是汗流浹背慎冤。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沧卢,地道東北人蚁堤。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像但狭,于是被迫代替她去往敵國和親披诗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容