設(shè)計模式---中介者模式(DesignPattern_Mediator)

摘錄自:設(shè)計模式與游戲完美開發(fā)

十年磨一劍遭商,作者將設(shè)計模式理論巧妙地融入到實踐中,以一個游戲的完整實現(xiàn)呈現(xiàn)設(shè)計模式的應(yīng)用及經(jīng)驗的傳承 《軒轅劍》之父——蔡明宏、資深游戲制作人——李佳澤西篓、Product Evangelist at Unity Technologies——Kelvin Lo、信仁軟件設(shè)計創(chuàng)辦人—— 賴信仁憋活、資深3D游戲美術(shù)——劉明愷 聯(lián)合推薦全書采用了整合式的項目教學岂津,即以一個游戲的范例來應(yīng)用23種設(shè)計模式的實現(xiàn)貫穿全書,讓讀者學習到整個游戲開發(fā)的全過程和作者想要傳承的經(jīng)驗悦即,并以淺顯易懂的比喻來解析難以理解的設(shè)計模式吮成,讓想深入了解此領(lǐng)域的讀者更加容易上手。


工程GitHub

MEDIATOR—四個MM打麻將辜梳,相互之間誰應(yīng)該給誰多少錢算不清楚了粱甫,幸虧當時我在旁邊,按照各自的籌碼數(shù)算錢冗美,賺了錢的從我這里拿魔种,賠了錢的也付給我,一切就OK啦粉洼,俺得到了四個MM的電話节预。

  • 中介者模式:調(diào)停者模式包裝了一系列對象相互作用的方式,使得這些對象不必相互明顯作用属韧。從而使他們可以松散偶合安拟。當某些對象之間的作用發(fā)生改變時,不會立即影響其他的一些對象之間的作用宵喂。保證這些作用可以彼此獨立的變化糠赦。調(diào)停者模式將多對多的相互作用轉(zhuǎn)化為一對多的相互作用。調(diào)停者模式將對象的行為和協(xié)作抽象化锅棕,把對象在小尺度的行為上與其他對象的相互作用分開處理拙泽。

源碼注釋及命名有所更改,個人感覺會比原版更好理解

using UnityEngine;
using System.Collections;

namespace DesignPattern_Mediator
{
    // 中介者抽象類
    public abstract class Mediator
    {
        public abstract void SendMessage(People theColleague,string Message);
    }

    // Mediator所關(guān)聯(lián)的People
    public abstract class People
    {
        protected Mediator m_Mediator = null;
        public People( Mediator theMediator)
        {
            m_Mediator = theMediator;
        }

        // 經(jīng)過Mediator收到的請求
        public abstract void Request(string Message);

    }

    // 實例People的類1
    public class ConcreatePeople1 : People
    {
        public ConcreatePeople1( Mediator theMediator) : base(theMediator)
        {}

        // 執(zhí)行通知操作
        public void Action()
        {
            // 通過Mediator向其他人傳遞信息
            m_Mediator.SendMessage(this, "ConcreatePeople1發(fā)出的信息");
        }

        // 經(jīng)過Mediator收到的請求
        public override void Request(string Message)
        {
            Debug.Log("ConcreateColleague1收到:" + Message);
        }
    }

    // 實例People的類2
    public class ConcreatePeople2 : People
    {
        public ConcreatePeople2( Mediator theMediator) : base(theMediator)
        {}

        // 執(zhí)行通知操作
        public void Action()
        {
            // 通過Mediator向其他人傳遞信息
            m_Mediator.SendMessage(this, "ConcreatePeople2發(fā)出的信息");
        }

        // Mediator通知請求
        public override void Request(string Message)
        {
            Debug.Log("ConcreateColleague2收到:"+Message);
        }
    }   

    // 實作Mediator界面裸燎,並集合管理People物件
    public class ConcreteMediator : Mediator
    {
        ConcreatePeople1 m_People1 = null;
        ConcreatePeople2 m_People2 = null;

        public void SetColleageu1(ConcreatePeople1 thePeople )
        {
            m_People1 = thePeople;
        }

        public void SetColleageu2(ConcreatePeople2 thePeople)
        {
            m_People2 = thePeople;
        }

        // 收到由People通知請求
        public override void SendMessage(People thePeople, string Message)
        {
            // 收到Colleague1通知Colleague2
            if(m_People1 == thePeople)
                m_People2.Request( Message);

            // 收到Colleague2通知Colleague1
            if(m_People2 == thePeople)
                m_People1.Request( Message);
        }
    }
}
using UnityEngine;
using System.Collections;
using DesignPattern_Mediator;

public class MediatorTest : MonoBehaviour
{


    void Start()
    {
        UnitTest();
    }

    void UnitTest()
    {
        // 實例中介者
        ConcreteMediator pMediator = new ConcreteMediator();

        // 產(chǎn)產(chǎn)生2個People實例
        ConcreatePeople1 People1 = new ConcreatePeople1(pMediator);
        ConcreatePeople2 People2 = new ConcreatePeople2(pMediator);

        // 設(shè)置對應(yīng)的中介者
        pMediator.SetColleageu1(People1);
        pMediator.SetColleageu2(People2);

        // 執(zhí)行通知相關(guān)操作
        People1.Action();
        People2.Action();
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末顾瞻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子德绿,更是在濱河造成了極大的恐慌荷荤,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件移稳,死亡現(xiàn)場離奇詭異蕴纳,居然都是意外死亡,警方通過查閱死者的電腦和手機个粱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門古毛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人都许,你說我怎么就攤上這事稻薇。” “怎么了梭稚?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵颖低,是天一觀的道長。 經(jīng)常有香客問我弧烤,道長忱屑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任暇昂,我火速辦了婚禮莺戒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘急波。我一直安慰自己从铲,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布澄暮。 她就那樣靜靜地躺著名段,像睡著了一般阱扬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伸辟,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天麻惶,我揣著相機與錄音,去河邊找鬼信夫。 笑死窃蹋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的静稻。 我是一名探鬼主播警没,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼振湾!你這毒婦竟也來了杀迹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤恰梢,失蹤者是張志新(化名)和其女友劉穎佛南,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嵌言,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嗅回,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摧茴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绵载。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖苛白,靈堂內(nèi)的尸體忽然破棺而出娃豹,到底是詐尸還是另有隱情,我是刑警寧澤购裙,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布懂版,位于F島的核電站,受9級特大地震影響躏率,放射性物質(zhì)發(fā)生泄漏躯畴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一薇芝、第九天 我趴在偏房一處隱蔽的房頂上張望蓬抄。 院中可真熱鬧,春花似錦夯到、人聲如沸嚷缭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阅爽。三九已至路幸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間优床,已是汗流浹背劝赔。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工誓焦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胆敞,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓杂伟,卻偏偏與公主長得像移层,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赫粥,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

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

  • 好的軟件設(shè)計是多用代碼復用观话,但實際設(shè)計中卻要遇到許多變化,而變化是復用的天敵越平。為了能夠盡量減少變化所帶來的設(shè)計復雜...
    CharlesW閱讀 574評論 0 0
  • 轉(zhuǎn)載自:經(jīng)典:從追MM談Java的23種設(shè)計模式 佩服原文作者對設(shè)計模式的深刻理解频蛔,哈哈哈?? 一. 創(chuàng)建型模式 1...
    濤大閱讀 885評論 0 2
  • 創(chuàng)建型模式 1、FACTORY—追MM少不了請吃飯了秦叛,麥當勞的雞翅和肯德基的雞翅都是MM愛吃的東西晦溪,雖然口味有所不...
    珈誼閱讀 343評論 0 0
  • 又一次在半夜驚醒不知道是因為夢還是因為心 發(fā)了一條狀態(tài)媽媽立馬就回復很多年后她又可以獨自在家沒有了露露沒有了樂樂好...
    樹妮兒閱讀 289評論 0 0
  • 之前太陽的后裔火的不行不行的時候三圆,我聽了妹妹的話等它養(yǎng)肥后再看,昨天今天惡補了一下避咆,全部都看完了舟肉。因為最近也在追小...
    麥基閱讀 273評論 1 0