android 設計模式--責任鏈模式

定義

使多個對象都有機會處理請求, 從而避免了請求的發(fā)送者與接收者之間的耦合關系。
將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,知道有對象處理它為止 。

什么是 ‘鏈’ 我們將多個節(jié)點首位相連所構成的模型成為鏈 , 對于鏈式結構,每個節(jié)點都可以被拆開再連接。
將這樣一種結構應用于編程領域,將每一個節(jié)點都看做是一個對象,每一個對象擁有不同的處理邏輯,將一個請求從鏈式的首端發(fā)出,沿著鏈的路徑依次傳遞給每一個節(jié)點對象,直至有對象處理這個請求為止 ,我們將這一種模式稱為責任鏈模式。

使用場景

多個對象可以處理同一請求,但具體由哪個對象處理則在運行時動態(tài)決定
在請求處理者不明確的情況下向多個對象中的一個提交一個請求
需要動態(tài)指定一組對象處理請求

簡單示例

public abstract class Leader {
    protected  Leader nextHandler ; //上一級領導

    public final void handleRequest(int money){
        if(money <= limit()){
            handle(money);
        }else{
            if(null != nextHandler){
                nextHandler.handleRequest(money);
            }
        }
    }

    // 能批復的金額
    abstract int limit();

    // 處理報銷
    abstract void handle(int money) ;
}

public class GroupLeader extends Leader {
    @Override
    int limit() {
        return 1000;
    }

    @Override
    void handle(int money) {
        System.out.println("組長處理報銷 金額:"+money);
    }
}
public class ManagerLeader extends Leader {
    @Override
    int limit() {
        return 5000;
    }

    @Override
    void handle(int money) {
        System.out.println("經(jīng)理處理報銷 金額:"+money);
    }
}
public class BossLeader extends Leader {
    @Override
    int limit() {
        return Integer.MAX_VALUE;
    }

    @Override
    void handle(int money) {
        System.out.println("老板處理報銷 金額:"+money);
    }
}
public class Client {

    public static void main(String[] args){

        GroupLeader groupLeader = new GroupLeader() ;
        ManagerLeader managerLeader = new ManagerLeader() ;
        BossLeader bossLeader = new BossLeader() ;
        groupLeader.nextHandler = managerLeader;
        managerLeader.nextHandler = bossLeader ;

        // 發(fā)起報銷
        groupLeader.handleRequest(5000);
    }
}

android 源碼示例 view 的時間傳遞 dispatchToouchEvent

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容