學習更多設計模式請參考:入門設計模式之彙總篇 責任鏈模式:很多對象由每一個對象對其下家的引用而連接起來行成的一條鏈。 其實責任鏈模式一直在我們的身邊。某一天,董事長有個想法,他吩咐給了經理,經理吩咐給了組長,組長分配給了你我。這時候我們發現,我們沒有下級了呀,咋辦,那就乾唄。 上方這個任務分配的過程 ...
學習更多設計模式請參考:入門設計模式之彙總篇
責任鏈模式:很多對象由每一個對象對其下家的引用而連接起來行成的一條鏈。
其實責任鏈模式一直在我們的身邊。某一天,董事長有個想法,他吩咐給了經理,經理吩咐給了組長,組長分配給了你我。這時候我們發現,我們沒有下級了呀,咋辦,那就乾唄。
上方這個任務分配的過程就是責任鏈模式,一個事件會一直向下層傳遞,董事長並不關心是誰解決的這個問題,對他來說只要問題解決了就行。
- 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,轉載請保留。