public interface Task { public void run(); } public class Task1 implements Task{ private Task task; public Task1() {} public Task1(Task task){ this.task = task; } @Override public void run() { System.out.println("task1 is run"); if(task != null){ task.run(); } } } public class Task2 implements Task{ private Task task; public Task2() {} public Task2(Task task){ this.task = task; } @Override public void run() { System.out.println("task2 is run"); if(task != null){ task.run(); } } } public class Task3 implements Task{ private Task task; public Task3() {} public Task3(Task task){ this.task = task; } @Override public void run() { System.out.println("task3 is run"); if(task != null){ task.run(); } } }
public class LiabilityChain { public void runChain(){ Task task3 = new Task1(); Task task2 = new Task2(task3); Task task1 = new Task3(task2); task1.run(); } }
以上是一個責任鏈的簡單的實現,若是想要深刻理解其思想,建議去觀察一個過濾器鏈的執行源碼。javascript
做者:Mazinjava
https://my.oschina.net/u/3441184/blog/889552設計模式
點擊「閱讀原文」和棧長學更多~服務器