Swift- 中介者(Mediator)模式

中介者模式(Mediator Pattern):定義一個中介對象來封裝系列對象之間的交互饱搏。中介者使各個對象不需要顯示地相互引用钟病,從而使其耦合性松散,而且可以獨立地改變他們之間的交互.

中介者模式.jpg

中介者模式顯示生活中場景比較多,買房和賣房者通過中介進行房屋交易兼呵,中介持有買賣雙方的信息畸写,但是買賣雙方不知道對方信息驮瞧, 網(wǎng)絡(luò)斗地主平臺根據(jù)輸贏結(jié)果對參與斗地主的人員賬戶進行信息進行更新.以斗地主為例:

class Colleague {
    
    var mediator:LeaderMediator?
    
    var cashMoney:Float = 0
}

class ColleagueA:Colleague {
    
    func winMoneyFromB(money:Float) {
        self.mediator?.changeMoney(action: "ColleagueA", money: money)
    }
    
}

class ColleagueB:Colleague {
    
    func winMoneyFromA(money:Float) {
        self.mediator?.changeMoney(action: "ColleagueB", money: money)
    }
    
}
class Mediator {
    
    var colleagueA:ColleagueA?
    
    var colleagueB:ColleagueB?
    
    convenience init(a:ColleagueA?,b:ColleagueB?) {
        self.init()
        colleagueA = a
        colleagueB = b
    }
    
    func changeMoney(action:String,money:Float) {}
}

class LeaderMediator:Mediator {
    
    override func changeMoney(action: String, money: Float) {
        if action == "ColleagueA" {
            self.colleagueA?.cashMoney += money
            self.colleagueB?.cashMoney -= money
        } else if action == "ColleagueB" {
            self.colleagueA?.cashMoney -= money
            self.colleagueB?.cashMoney += money
        }
    }
    
}
let colleagueA:ColleagueA = ColleagueA()
        let colleagueB:ColleagueB = ColleagueB()
        colleagueA.cashMoney = 100
        colleagueB.cashMoney = 100
        
        print("A當(dāng)前現(xiàn)金:\(colleagueA.cashMoney)---B當(dāng)前的現(xiàn)金:\(colleagueB.cashMoney)")
        
        let mediator:LeaderMediator = LeaderMediator(a: colleagueA, b: colleagueB)
        colleagueA.mediator = mediator
        colleagueB.mediator = mediator
        
        colleagueA.winMoneyFromB(money: 20)
        
        print("A當(dāng)前現(xiàn)金:\(colleagueA.cashMoney)---B當(dāng)前的現(xiàn)金:\(colleagueB.cashMoney)")
        
        colleagueB.winMoneyFromA(money: 50)
        
        print("A當(dāng)前現(xiàn)金:\(colleagueA.cashMoney)---B當(dāng)前的現(xiàn)金:\(colleagueB.cashMoney)")
FlyElephant.png

中介者模式的優(yōu)點:
1.降低了系統(tǒng)對象之間的耦合性,使得對象易于獨立的被復(fù)用.
2.提高系統(tǒng)的靈活性枯芬,使得系統(tǒng)易于擴展和維護.

中介者模式的缺點:
中介者模式的缺點是顯而易見的论笔,因為這個“中介“承擔(dān)了較多的責(zé)任,所以一旦這個中介對象出現(xiàn)了問題千所,那么整個系統(tǒng)就會受到重大的影響.

參考鏈接
http://blog.jobbole.com/78124/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狂魔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子淫痰,更是在濱河造成了極大的恐慌最楷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異管嬉,居然都是意外死亡皂林,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門蚯撩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來础倍,“玉大人,你說我怎么就攤上這事胎挎」灯簦” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵犹菇,是天一觀的道長德迹。 經(jīng)常有香客問我,道長揭芍,這世上最難降的妖魔是什么胳搞? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮称杨,結(jié)果婚禮上肌毅,老公的妹妹穿的比我還像新娘。我一直安慰自己姑原,他們只是感情好悬而,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锭汛,像睡著了一般笨奠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唤殴,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天般婆,我揣著相機與錄音,去河邊找鬼眨八。 笑死腺兴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的廉侧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼篓足,長吁一口氣:“原來是場噩夢啊……” “哼段誊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起栈拖,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤连舍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后涩哟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體索赏,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡盼玄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了潜腻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片埃儿。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖融涣,靈堂內(nèi)的尸體忽然破棺而出童番,到底是詐尸還是另有隱情,我是刑警寧澤威鹿,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布剃斧,位于F島的核電站,受9級特大地震影響忽你,放射性物質(zhì)發(fā)生泄漏幼东。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一科雳、第九天 我趴在偏房一處隱蔽的房頂上張望根蟹。 院中可真熱鬧,春花似錦炸渡、人聲如沸娜亿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽买决。三九已至,卻和暖如春吼畏,著一層夾襖步出監(jiān)牢的瞬間督赤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工泻蚊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留躲舌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓性雄,卻偏偏與公主長得像没卸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秒旋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

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

  • 1 場景問題# 1.1 如果沒有主板## 大家都知道约计,電腦里面各個配件之間的交互,主要是通過主板來完成的(事實上主...
    七寸知架構(gòu)閱讀 2,170評論 0 56
  • 設(shè)計模式基本原則 開放-封閉原則(OCP)迁筛,是說軟件實體(類煤蚌、模塊、函數(shù)等等)應(yīng)該可以拓展,但是不可修改尉桩。開-閉原...
    西山薄涼閱讀 3,798評論 3 14
  • 設(shè)計模式匯總 一筒占、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 3,944評論 1 15
  • 意圖 用一個中介對象來封裝一系列的對象交互蜘犁。中介者使各對象不需要顯式地相互引用翰苫,從而使其耦合松散,而且可以獨立地改...
    tomas家的小撥浪鼓閱讀 1,123評論 0 0
  • Chapter.02楨瀲 【夢里的眼睛】 小時候沽瘦。 總是重復(fù)著同樣的一個夢境革骨。 陰沉甚至幾乎是黑暗的天空,透明而且...
    亦黎閱讀 279評論 4 1