責(zé)任鏈模式

責(zé)任鏈模式是一種對象的行為模式。在責(zé)任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞措左,直到鏈上的某一個對象決定處理此請求。發(fā)出這個請求的客戶端并不知道鏈上的哪一個對象最終處理這個請求避除,這使得系統(tǒng)可以在不影響客戶端的情況下動態(tài)地重新組織和分配責(zé)任怎披。

在以下條件下可考慮使用Chain of Responsibility:

  1. 有多個的對象可以處理一個請求,哪個對象處理該請求運行時刻自動確定瓶摆。
  2. 你想在不明確指定接受者的情況下凉逛,想過個對象
    中的一個提交一個請求。
  3. 可處理一個請求的對象集合應(yīng)該被動態(tài)指定群井。

優(yōu)點: 1状飞、降低耦合度。它將請求的發(fā)送者和接收者解耦书斜。 2诬辈、簡化了對象。使得對象不需要知道鏈的結(jié)構(gòu)荐吉。 3焙糟、增強給對象指派職責(zé)的靈活性。通過改變鏈內(nèi)的成員或者調(diào)動它們的次序样屠,允許動態(tài)地新增或者刪除責(zé)任酬荞。 4搓劫、增加新的請求處理類很方便。

缺點: 1混巧、不能保證請求一定被接收。 2勤揩、系統(tǒng)性能將受到一定影響咧党,而且在進行代碼調(diào)試時不太方便,可能會造成循環(huán)調(diào)用陨亡。 3傍衡、可能不容易觀察運行時的特征,有礙于除錯负蠕。

使用場景: 1蛙埂、有多個對象可以處理同一個請求,具體哪個對象處理該請求由運行時刻自動確定遮糖。 2绣的、在不明確指定接收者的情況下,向多個對象中的一個提交一個請求欲账。 3屡江、可動態(tài)指定一組對象處理請求。

public interface Handler {
    void operator();
}
public abstract class AbstractHandler {

    private Handler handler;


    public Handler getHandler() {
        return handler;
    }

    public void setHandler(Handler handler) {
        this.handler = handler;
    }
}
public class MyHandler1 extends AbstractHandler implements Handler {
    @Override
    public void operator() {
        System.out.println(this.getClass().getSimpleName()+"  operate");
        if(getHandler()!=null){
            getHandler().operator();
        }
    }
}
public class MyHandler2 extends AbstractHandler implements Handler {
    @Override
    public void operator() {
        System.out.println(this.getClass().getSimpleName()+"  operate");
        if(getHandler()!=null){
            getHandler().operator();
        }
    }
}
public class MyHandler3 extends AbstractHandler implements Handler {
    @Override
    public void operator() {
        System.out.println(this.getClass().getSimpleName()+"  operate");
        if(getHandler()!=null){
            getHandler().operator();
        }
    }
}
   @Test
    public void testChainOfResponsibility() {
        MyHandler1 h1 = new MyHandler1();
        MyHandler2 h2 = new MyHandler2();
        MyHandler3 h3 = new MyHandler3();

        h1.setHandler(h2);
        h2.setHandler(h3);
        h1.operator();
    }
MyHandler1  operate
MyHandler2  operate
MyHandler3  operate
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赛不,一起剝皮案震驚了整個濱河市惩嘉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踢故,老刑警劉巖文黎,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異殿较,居然都是意外死亡耸峭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門斜脂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抓艳,“玉大人,你說我怎么就攤上這事帚戳$杌颍” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵片任,是天一觀的道長偏友。 經(jīng)常有香客問我,道長对供,這世上最難降的妖魔是什么位他? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任氛濒,我火速辦了婚禮,結(jié)果婚禮上鹅髓,老公的妹妹穿的比我還像新娘舞竿。我一直安慰自己,他們只是感情好窿冯,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布骗奖。 她就那樣靜靜地躺著,像睡著了一般醒串。 火紅的嫁衣襯著肌膚如雪执桌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天芜赌,我揣著相機與錄音仰挣,去河邊找鬼。 笑死缠沈,一個胖子當著我的面吹牛膘壶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播博烂,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼香椎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了禽篱?” 一聲冷哼從身側(cè)響起畜伐,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎躺率,沒想到半個月后玛界,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡悼吱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年慎框,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片后添。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡笨枯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遇西,到底是詐尸還是另有隱情馅精,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布粱檀,位于F島的核電站洲敢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茄蚯。R本人自食惡果不足惜压彭,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一睦优、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧壮不,春花似錦汗盘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至家凯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間如失,已是汗流浹背绊诲。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留褪贵,地道東北人掂之。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像脆丁,于是被迫代替她去往敵國和親世舰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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

  • 1.初識職責(zé)鏈模式 使多個對象都有機會處理請求槽卫,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系跟压。將這些對象連成一條鏈,...
    王偵閱讀 778評論 0 1
  • 責(zé)任鏈模式CoR (Chain of Responsibility) 概述 責(zé)任鏈模式是一種設(shè)計模式歼培。在責(zé)任鏈模式...
    n油炸小朋友閱讀 1,979評論 0 4
  • 目錄 本文的結(jié)構(gòu)如下: 引言 什么是責(zé)任鏈模式 模式的結(jié)構(gòu) 典型代碼 代碼示例 純與不純的責(zé)任鏈模式 優(yōu)點和缺點 ...
    w1992wishes閱讀 1,249評論 4 14
  • 因?qū)ξ恼碌馁|(zhì)量有所期待震蒋,卻因能力有限,每天只能構(gòu)思文章提綱躲庄,在空閑時期加以打磨查剖。故集中發(fā)文,請見諒噪窘。 有人說笋庄,世界...
    大知閑閑_dfec閱讀 683評論 0 1
  • 拉夫烈茨基曾經(jīng)去過莉莎隱居的那座遙遠的修道院,……而且看到了她倔监,她從一個唱詩班席位去另一個唱詩班席位的時候直砂,曾經(jīng)從...
    云杉水映閱讀 313評論 0 0