久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Chain of Responsibility 職責(zé)鏈模式

 小仙女本仙人 2021-07-06

>>返回《C#常用設(shè)計模式》

1. 簡介

  • 定義
    • 很多對象由每一個對象對其下家的引用而連接起來形成一條鏈,。
    • 請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求,。
    • 發(fā)出這個請求的客戶端并不知道鏈上的哪一個對象最終處理這個請求,,這使得系統(tǒng)可以在不影響客戶端的情況下動態(tài)地重新組織和分配責(zé)任。
    • 責(zé)任鏈可能是一條直線,、一個環(huán)鏈或者一個樹結(jié)構(gòu)的一部分
  • 類圖

2. 示例

public abstract class Handler {
    
    /**
     * 持有后繼的責(zé)任對象
     */
    protected Handler successor;
    /**
     * 示意處理請求的方法,,雖然這個示意方法是沒有傳入?yún)?shù)的
     * 但實際是可以傳入?yún)?shù)的,根據(jù)具體需要來選擇是否傳遞參數(shù)
     */
    public abstract void handleRequest();
    /**
     * 取值方法
     */
    public Handler getSuccessor() {
        return successor;
    }
    /**
     * 賦值方法,,設(shè)置后繼的責(zé)任對象
     */
    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }
    
}

public class ConcreteHandler extends Handler {
    /**
     * 處理方法,,調(diào)用此方法處理請求
     */
    public override void handleRequest() {
        /**
         * 判斷是否有后繼的責(zé)任對象
         * 如果有,就轉(zhuǎn)發(fā)請求給后繼的責(zé)任對象
         * 如果沒有,則處理請求
         */
        if(getSuccessor() != null)
        {            
            Console.WriteLine("放過請求");
            getSuccessor().handleRequest();            
        }else
        {            
            Console.WriteLine("處理請求");
        }
    }

}

public class Client {

    public static void main(String[] args) {
        //組裝責(zé)任鏈
        Handler handler1 = new ConcreteHandler();
        Handler handler2 = new ConcreteHandler();
        handler1.setSuccessor(handler2);
        //提交請求
        handler1.handleRequest();
    }
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多