zoukankan      html  css  js  c++  java
  • JAVA设计模式之责任链模式

    一、什么是责任链模式?

      责任链模式是指多个对象,能够依次的对传递过来的信息进行处理,并传递给下一个对象,直到处理完毕。

    二、责任链有哪些角色?

    1. 抽象处理者角色:定义一个处理请求的接口,如果需要,接口可以定义出一个方法来设定和返回下一个处理者
    2. 具体处理者角色:具体处理者接收到请求后,可以选择将请求处理掉,或者将请求传递给下一个处理者

    三、代码详解:

      抽象类:  

    public abstract class Handler {
        /**
         * 下一个处理者
         */
        private Handler target;
    
        public Handler getTarget() {
            return target;
        }
    
        public void setTarget(Handler target) {
            this.target = target;
        }
        
        public abstract void process();
    
    }

      具体实现者A:

    public class Handler_A extends Handler {
    
        @Override
        public void process() {
            Handler handler = getTarget();
            if (handler == null) {
                System.out.println("A处理后, 直接返回结果");
                return;
            } else {
                System.out.println("A处理后,返回个下一个handler继续处理");
                handler.process();
            }
        }
    
    }

      具体实现者B:

    public class Handler_B extends Handler{
    
        @Override
        public void process() {
            Handler handler = getTarget();
            if (handler == null) {
                System.out.println("B处理后, 直接返回结果");
                return;
            } else {
                System.out.println("B处理后,返回个下一个handler继续处理");
                handler.process();
            }
        }
    
    }

      客户端:

    public class Client {
    
        public static void main(String[] args) {
            
            Handler handlerA = new Handler_A();
            Handler handlerB = new Handler_B();
            handlerA.setTarget(handlerB);
            
            handlerA.process();
            
        }
        
    }

    结果打印: 

    A处理后,返回个下一个handler继续处理
    B处理后, 直接返回结果

      

  • 相关阅读:
    二项堆(三)之 Java的实现
    二项堆(二)之 C++的实现
    二项堆(一)之 图文解析 和 C语言的实现
    斜堆(三)之 Java的实现
    斜堆(二)之 C++的实现
    斜堆(一)之 C语言的实现
    左倾堆(三)之 Java的实现
    左倾堆(二)之 C++的实现
    左倾堆(一)之 图文解析 和 C语言的实现
    二叉堆(三)之 Java的实现
  • 原文地址:https://www.cnblogs.com/lfdingye/p/7789061.html
Copyright © 2011-2022 走看看