天天看點

入門設計模式之責任鍊模式

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。部落格源位址為zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/80890560

學習更多設計模式請參考: 入門設計模式之彙總篇 https://zhixiang.org.cn/#/blog/read/6e3fb58b-b72d-48fd-8a9c-b01c339f7b61

責任鍊模式:很多對象由每一個對象對其下家的引用而連接配接起來行成的一條鍊。

其實責任鍊模式一直在我們的身邊。某一天,董事長有個想法,他吩咐給了經理,經理吩咐給了組長,組長配置設定給了你我。這時候我們發現,我們沒有下級了呀,咋辦,那就幹呗。

上方這個任務配置設定的過程就是責任鍊模式,一個事件會一直向下層傳遞,董事長并不關心是誰解決的這個問題,對他來說隻要問題解決了就行。

  • Handle:抽象處理者,可了解為抽象的員工(經理組長普通程式員等都是繼承了員工)
  • Handle:具體處理者:具體做事的人(具體某一個經理組長普通程式員等)
  • Client:用戶端

來看一下代碼實作:

public abstract class Handle {
    protected Handle next;
    public abstract void handleRequest();

    public void setNext(Handle next){
        this.next=next;
    }
}

public class HandleImpl extends Handle {
    @Override
    public void handleRequest() {
        if(next!=null){
            System.out.println("調用下級處理");
            next.handleRequest();
        }else{
            System.out.println("請求進行中。。。");
        }
    }
}

public class Client {
    public static void main(String args[]){
            Handle handle1=new HandleImpl();
            Handle handle2=new HandleImpl();
            Handle handle3=new HandleImpl();
            handle1.setNext(handle2);
            handle2.setNext(handle3);
            handle1.handleRequest();
    }
}
      

可以看到上方代碼運作過程就像文章開始時我們所舉得例子,隻要它存在下級就會把請求交給下級去處理,這就是典型的責任鍊模式

本文出自

https://zhixiang.org.cn/#/blog/read/21a887cf-d97a-4801-aecb-bc9578a2f1e1

,轉載請保留。

繼續閱讀