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处理后, 直接返回结果

      

  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/lfdingye/p/7789061.html
Copyright © 2011-2022 走看看