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

UML關(guān)系簡單介紹
UML簡單使用的介紹
創(chuàng)建型設(shè)計模式
Android設(shè)計模式-單例模式
Android設(shè)計模式-工廠模式
Android設(shè)計模式-抽象工廠模式
Android設(shè)計模式-建造者模式
Android設(shè)計模式-原型模式
結(jié)構(gòu)型設(shè)計模式
Android設(shè)計模式-代理模式
Android設(shè)計模式-裝飾模式
Android設(shè)計模式-適配器模式
Android設(shè)計模式-組合模式
Android設(shè)計模式-門面模式
Android設(shè)計模式-橋接模式
Android設(shè)計模式-享元模式
行為型設(shè)計模式
Android設(shè)計模式-策略模式
Android設(shè)計模式-命令模式
Android設(shè)計模式-責(zé)任鏈模式
Android設(shè)計模式-模版方法模式
Android設(shè)計模式-迭代器模式
Android設(shè)計模式-觀察者模式
Android設(shè)計模式-備忘錄模式
Android設(shè)計模式-中介者模式
Android設(shè)計模式-訪問者模式
Android設(shè)計模式-狀態(tài)模式
Android設(shè)計模式-解釋器模式

1.定義

使多個對象都有機(jī)會處理請求,從而避免了請求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對象連成一條鏈粟誓,并沿著這條鏈傳遞該請求隙畜,直到有對象處理它位置。

責(zé)任鏈模式UML圖

責(zé)任鏈模式UML圖

角色介紹

  • Handler 抽象處理者,抽象出問題處理的方法东揣,并持有下一個處理者的引用
  • ConcreteHandler 具體處理者践惑,繼承抽象,并實現(xiàn)具體的方法
  • Client 客戶端嘶卧,調(diào)用的地方0.0
    責(zé)任鏈的核心在具體處理者上尔觉,鏈?zhǔn)怯啥鄠€具體處理者組成的。

3.簡單實現(xiàn)

3.1抽象處理者

public abstract class Handler {
    private Handler nextHandler;


    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }
//此處結(jié)合了模版方法模式芥吟,后續(xù)介紹
    public final void handlerMessage(String request){
//此處的判斷邏輯根據(jù)具體的業(yè)務(wù)修改侦铜,這里就是做個簡單的示范
        if (request.contains("111")){
            System.out.println("本節(jié)點處理");
            dealMessage();
        }else {
            if (this.nextHandler!=null){
                System.out.println("傳遞到了下一節(jié)點");
                this.nextHandler.handlerMessage(request);

            }else {
                System.out.println("沒有下一節(jié)點了。钟鸵。钉稍。怎么處理看具體業(yè)務(wù)了");            
            }
        }
    }

    public abstract void dealMessage();
}

3.2具體處理者

public class ConcreteHandler1 extends Handler {
    @Override
    public void dealMessage() {
        System.out.println("節(jié)點1處理了任務(wù)");
    }
}


public class ConcreteHandler2 extends Handler {
    @Override
    public void dealMessage() {
        System.out.println("節(jié)點2處理了任務(wù)");
    }
}

3.3客戶端調(diào)用

public class MyClass {
    public static void main(String args[]) {
//一般關(guān)于鏈的設(shè)置也不會在高層模塊中設(shè)置,此處是做個示范
        Handler handler1=new ConcreteHandler1();
        Handler handler2=new ConcreteHandler2();
        handler1.setNextHandler(handler2);

        handler1.handlerMessage("111111");

        System.out.println("---------分割線--------");

        handler1.handlerMessage("222222");
    }
}


打印結(jié)果

本節(jié)點處理
節(jié)點1處理了任務(wù)
---------分割線--------
傳遞到了下一節(jié)點
沒有下一節(jié)點了棺耍。贡未。。怎么處理看具體業(yè)務(wù)了

具體使用中蒙袍,一般關(guān)于鏈的設(shè)置也不會在高層模塊中設(shè)置俊卤,而是封裝出一個封裝類,在需要使用的時候返回鏈的第一個節(jié)點對象即可正常使用害幅。

4.總結(jié)

  • 優(yōu)點 將請求和處理分開消恍,請求者不用直到是誰處理的,處理者不用直到請求的全貌矫限,兩者解耦哺哼,提高了系統(tǒng)的靈活性。
  • 缺點 鏈條特長的時候很麻煩吧叼风。取董。畢竟類似于遞歸
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市无宿,隨后出現(xiàn)的幾起案子茵汰,更是在濱河造成了極大的恐慌,老刑警劉巖孽鸡,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹂午,死亡現(xiàn)場離奇詭異,居然都是意外死亡彬碱,警方通過查閱死者的電腦和手機(jī)豆胸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巷疼,“玉大人晚胡,你說我怎么就攤上這事。” “怎么了估盘?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵瓷患,是天一觀的道長。 經(jīng)常有香客問我遣妥,道長擅编,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任箫踩,我火速辦了婚禮爱态,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘境钟。我一直安慰自己肢藐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布吱韭。 她就那樣靜靜地躺著吆豹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪理盆。 梳的紋絲不亂的頭發(fā)上痘煤,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音猿规,去河邊找鬼衷快。 笑死,一個胖子當(dāng)著我的面吹牛姨俩,可吹牛的內(nèi)容都是我干的蘸拔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼环葵,長吁一口氣:“原來是場噩夢啊……” “哼调窍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起张遭,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤邓萨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后菊卷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缔恳,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年洁闰,在試婚紗的時候發(fā)現(xiàn)自己被綠了歉甚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡扑眉,死狀恐怖纸泄,靈堂內(nèi)的尸體忽然破棺而出雅镊,到底是詐尸還是另有隱情,我是刑警寧澤刃滓,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站耸弄,受9級特大地震影響咧虎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜计呈,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一砰诵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捌显,春花似錦茁彭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至善镰,卻和暖如春妹萨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炫欺。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工乎完, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人品洛。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓树姨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桥状。 傳聞我的和親對象是個殘疾皇子帽揪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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