• 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

    以上是一个责任链的简单的实现,如果想要深入理解其思想,建议去观察一个过滤器链的执行源码。

    作者:Mazin

    https://my.oschina.net/u/3441184/blog/889552

    - END -
    推荐阅读:

    关注Java技术栈公众号在后台回复:设计模式,可获取一份栈长整理的设计模式教程,都是干货。

    640

    点击「阅读原文」和栈长学更多~

  • 相关阅读:
    android listview 圆角的实现方案,模仿Iphone的UITableView
    在android编程中插入背景图片
    iOS开发UI篇—UIPickerView控件简单介绍
    iOS开发UI篇章 15-项目中的常见文件
    iOS开发UI篇章之通知中心(NSNotificationCenter)
    iOS开发UI篇章之应用管理的九宫格坐标计算
    iOS开发UI篇章之-Button基础
    Xcode-Run和快捷键
    Css基础-介绍及语法
    CSDN首页> 移动开发 直接拿来用!最火的Android开源项目(完结篇)
  • 原文地址:https://www.cnblogs.com/java-stack/p/11951983.html
Copyright © 2020-2023  润新知