設(shè)計模式---責(zé)任鏈模式(DesignPattern_ChainofResponsibility)

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

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


工程GitHub

using UnityEngine;
using System.Collections;

namespace DesignPattern_ChainofResponsibility
{
    // 處理訊息的介面
    public abstract class Handler
    {
        protected Handler m_NextHandler = null;

        public Handler( Handler theNextHandler )
        {
            m_NextHandler = theNextHandler;
        }

        public virtual void HandleRequest(int Cost)
        {
            if(m_NextHandler!=null)
                m_NextHandler.HandleRequest(Cost);
        }
    }
    
    // 處理所負(fù)責(zé)的訊息1
    public class ConcreteHandler1 : Handler
    {
        private int m_CostCheck = 10;

        public ConcreteHandler1( Handler theNextHandler ) : base( theNextHandler )
        {}

        public override void HandleRequest(int Cost)
        {
            if( Cost <= m_CostCheck)
                Debug.Log("ConcreteHandler1.核準(zhǔn)");
            else
                base.HandleRequest(Cost);
        }
    }

    // 處理所負(fù)責(zé)的訊息2
    public class ConcreteHandler2 : Handler
    {
        private int m_CostCheck = 20;
        
        public ConcreteHandler2( Handler theNextHandler ) : base( theNextHandler )
        {}
        
        public override void HandleRequest(int Cost)
        {
            if( Cost <= m_CostCheck)
                Debug.Log("ConcreteHandler2.核準(zhǔn)");
            else
                base.HandleRequest(Cost);
        }
    }

    // 處理所負(fù)責(zé)的訊息3
    public class ConcreteHandler3 : Handler
    {           
        public ConcreteHandler3( Handler theNextHandler ) : base( theNextHandler )
        {}  
        public override void HandleRequest(int Cost)
        {
            Debug.Log("ConcreteHandler3.核準(zhǔn)");
        }
    }

}

using UnityEngine;
using System.Collections;
using DesignPattern_ChainofResponsibility;

public class ChainofResponsibilityTest : MonoBehaviour {

    // Use this for initialization
    void Start () {
        UnitTest();
    }
    
    // 
    void UnitTest () {

        // 建立Cost驗(yàn)証的連接方式
        ConcreteHandler3 theHandle3 = new ConcreteHandler3(null);
        ConcreteHandler2 theHandle2 = new ConcreteHandler2(theHandle3);
        ConcreteHandler1 theHandle1 = new ConcreteHandler1(theHandle2);

        // 確認(rèn)
        theHandle1.HandleRequest(10);
        theHandle1.HandleRequest(15);
        theHandle1.HandleRequest(20);
        theHandle1.HandleRequest(30);
        theHandle1.HandleRequest(100);

    
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市撤奸,隨后出現(xiàn)的幾起案子吠昭,更是在濱河造成了極大的恐慌,老刑警劉巖胧瓜,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矢棚,死亡現(xiàn)場離奇詭異,居然都是意外死亡府喳,警方通過查閱死者的電腦和手機(jī)蒲肋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钝满,“玉大人兜粘,你說我怎么就攤上這事⊥溲粒” “怎么了孔轴?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碎捺。 經(jīng)常有香客問我路鹰,道長贷洲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任晋柱,我火速辦了婚禮恩脂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘趣斤。我一直安慰自己俩块,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布浓领。 她就那樣靜靜地躺著玉凯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪联贩。 梳的紋絲不亂的頭發(fā)上漫仆,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音泪幌,去河邊找鬼盲厌。 笑死,一個胖子當(dāng)著我的面吹牛祸泪,可吹牛的內(nèi)容都是我干的吗浩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼没隘,長吁一口氣:“原來是場噩夢啊……” “哼懂扼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起右蒲,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤阀湿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瑰妄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陷嘴,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年间坐,在試婚紗的時候發(fā)現(xiàn)自己被綠了灾挨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡眶诈,死狀恐怖涨醋,靈堂內(nèi)的尸體忽然破棺而出瓜饥,到底是詐尸還是另有隱情逝撬,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布乓土,位于F島的核電站宪潮,受9級特大地震影響溯警,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜狡相,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一梯轻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尽棕,春花似錦喳挑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至回官,卻和暖如春曹宴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歉提。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工笛坦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苔巨。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓版扩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侄泽。 傳聞我的和親對象是個殘疾皇子资厉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

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