設計模式(十九)中介者模式()

中介者.png

思想:使程序結構更清晰泪勒。將兩兩互相引用的繁雜高耦合的關系,使用中介者雀瓢,各自與中介者產(chǎn)生關系,降低耦合玉掸。
意圖:
用一個中介對象來封裝一系列的對象交互刃麸。中介者使各對象不需要顯式地相互引用,從而使其耦合松散司浪,而且可以獨立地改變它們之間的交互泊业。

適用性:
一組對象以定義良好但是復雜的方式進行通信。產(chǎn)生的相互依賴關系結構混亂且難以理解断傲。
一個對象引用其他很多對象并且直接與這些對象通信,導致難以復用該對象脱吱。
想定制一個分布在多個類中的行為智政,而又不想生成太多的子類认罩。

案例一:

"""
應用場景:一組已經(jīng)定義良好但是用復雜的方式進行通信,以及想定制一個分布在多個類中的行為,又不想生成太多子類的場合
(中介者降低交互者的耦合度,并且把交互的中心放在了中介者的身上,站在更宏觀的角度上看待系統(tǒng))
"""
# 抽象中介者類
class Metiator(object):

    def send(self,message,concreteobj):
        pass

# 具體中介者類——聯(lián)合國
class United(Metiator):

    def __init__(self):
        self.country1 = ""
        self.country2 = ""

    def send(self,message,concreteobj):
        if self.country1 == concreteobj:
            self.country2.get_message(message)
        elif self.country2 == concreteobj:
            self.country1.get_message(message)
        else:
            print '沒有對象'
# 抽象交互類
class Country(object):

    def __init__(self):
        self.metiator = ""

    def bind(self,metiator):
        self.metiator = metiator

# 具體交互類——中國
class China(Country):

    def send(self, message):
        self.metiator.send(message,self)

    def get_message(self,message):
        print "中國獲取對方消息:",message
# 具體交互類——某國
class Stick(Country):

    def send(self, message):
        self.metiator.send(message,self)

    def get_message(self,message):
        print "棒子獲取對方消息:",message


if __name__ == "__main__":
    # 創(chuàng)建中介者,具體的交互者
    united = United()
    china = China()
    stick = Stick()
    # 交互者綁定交互的中介者
    china.bind(united)
    stick.bind(united)

    united.country1 = china
    united.country2 = stick
    #開始交互
    china.send('棒子,別部署薩德,揍你哦')
    stick.send('哥,我錯了,不部署了')
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市续捂,隨后出現(xiàn)的幾起案子垦垂,更是在濱河造成了極大的恐慌,老刑警劉巖牙瓢,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劫拗,死亡現(xiàn)場離奇詭異,居然都是意外死亡矾克,警方通過查閱死者的電腦和手機页慷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酒繁,你說我怎么就攤上這事滓彰。” “怎么了州袒?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵揭绑,是天一觀的道長。 經(jīng)常有香客問我郎哭,道長他匪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任夸研,我火速辦了婚禮邦蜜,結果婚禮上,老公的妹妹穿的比我還像新娘亥至。我一直安慰自己畦徘,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布抬闯。 她就那樣靜靜地躺著井辆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溶握。 梳的紋絲不亂的頭發(fā)上杯缺,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音睡榆,去河邊找鬼萍肆。 笑死,一個胖子當著我的面吹牛胀屿,可吹牛的內(nèi)容都是我干的塘揣。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼宿崭,長吁一口氣:“原來是場噩夢啊……” “哼亲铡!你這毒婦竟也來了?” 一聲冷哼從身側響起葡兑,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤奖蔓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后讹堤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吆鹤,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年洲守,在試婚紗的時候發(fā)現(xiàn)自己被綠了疑务。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沾凄。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖知允,靈堂內(nèi)的尸體忽然破棺而出搭独,到底是詐尸還是另有隱情,我是刑警寧澤廊镜,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布牙肝,位于F島的核電站,受9級特大地震影響嗤朴,放射性物質(zhì)發(fā)生泄漏配椭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一雹姊、第九天 我趴在偏房一處隱蔽的房頂上張望股缸。 院中可真熱鬧,春花似錦吱雏、人聲如沸敦姻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镰惦。三九已至,卻和暖如春犬绒,著一層夾襖步出監(jiān)牢的瞬間旺入,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工凯力, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茵瘾,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓咐鹤,卻偏偏與公主長得像拗秘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子祈惶,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

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

  • 1 場景問題# 1.1 如果沒有主板## 大家都知道雕旨,電腦里面各個配件之間的交互,主要是通過主板來完成的(事實上主...
    七寸知架構閱讀 2,185評論 0 56
  • 目錄 本文的結構如下: 引言 什么是中介者模式 模式的結構 典型代碼 代碼示例 優(yōu)點和缺點 適用環(huán)境 模式應用 一...
    w1992wishes閱讀 1,118評論 0 4
  • 意圖 用一個中介對象來封裝一系列的對象交互行瑞。中介者使各對象不需要顯式地相互引用奸腺,從而使其耦合松散餐禁,而且可以獨立地改...
    tomas家的小撥浪鼓閱讀 1,128評論 0 0
  • 設計模式匯總 一血久、基礎知識 1. 設計模式概述 定義:設計模式(Design Pattern)是一套被反復使用、多...
    MinoyJet閱讀 3,949評論 1 15
  • 思維生命中最重要的事的空性 1帮非、一切都是對的 有人覺得金錢是最重要的氧吐,有人覺得成長是重要讹蘑,有人覺得關系是最重要的,...
    天門金珠瑜伽閱讀 226評論 0 1