Java中的責任鏈設計模式,太牛了!

640?wx_fmt=jpeg

責任鏈設計模式的思想很簡單,就是按照鏈的順序執行一個個處理方法,鏈上的每個任務都持有它後面那個任務的對象引用,以方便本身這段執行完成以後,調用其後面的處理邏輯。
下面是一個責任鏈設計模式的簡單的實現:
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();
    }
  }
}

這個和服務器的過濾器有點相似,過濾器的實現也都是實現了同一個接口Filter。
public class LiabilityChain {

  public void runChain(){
    Task task3 = new Task1();
    Task task2 = new Task2(task3);
    Task task1 = new Task3(task2);
    task1.run();
  }

}

 
 

640?wx_fmt=png

以上是一個責任鏈的簡單的實現,若是想要深刻理解其思想,建議去觀察一個過濾器鏈的執行源碼。javascript

做者:Mazinjava

https://my.oschina.net/u/3441184/blog/889552設計模式

- END -
推薦閱讀:

關注 Java技術棧 公衆號在後臺回覆: 設計模式 ,可獲取一份棧長整理的設計模式教程,都是乾貨。

640

點擊「閱讀原文」和棧長學更多~服務器

相關文章
相關標籤/搜索