zoukankan      html  css  js  c++  java
  • Java设计模式(19)——行为模式之责任链模式(chain of responsibilitiy)

    一、概述

      概念

      

      UML简图

      

      角色

      抽象处理器:定义处理请求的接口

      具体处理器:接收到请求后可以选择处理,也可以选择发给下家处理(持有下家的引用)

      当然这里必须指出,实际中纯的责任链模式很难寻找,一般是不纯的责任链模式:也就是一个处理器承担了部分请求,再把部分传递给下家

    而纯的责任链则是要求一个处理器只能有承担责任和传递给下家的两种情况。一般的,我们见到的是不纯的居多。

    二、实践

      给出相应角色的代码

      抽象处理器

    /**
     * 抽象处理器接口
     *
     * @author Administrator
     **/
    public abstract class Handler {
        /**
         * 处理器下家,此处采用逻辑为如果有下家则给下家处理,没有下家则自己处理
         */
        protected Handler successor;
    
        public Handler getSuccessor() {
            return successor;
        }
    
        public void setSuccessor(Handler successor) {
            this.successor = successor;
        }
    
        public abstract void handleRequest();
    }

      具体处理器

    /**
     * 具体处理器
     *
     * @author Administrator
     **/
    public class ConcreteHandler extends Handler{
        @Override
        public void handleRequest() {
            if (getSuccessor() != null) {
                System.out.println("处理转接给:" + getSuccessor());
                getSuccessor().handleRequest();
            } else {
                System.out.println("没有下家处理请求,此处处理请求");
            }
        }
    }

      客户端(把请求给第一个处理器)

    /**
     * 客户端
     * @author  Administrator
     **/
    public class Client {
        public static void main(String[] args) {
            Handler handler1 = new ConcreteHandler();
            Handler handler2 = new ConcreteHandler();
            // 指出第一个处理器的对象的下家是第二个处理器
            handler1.setSuccessor(handler2);
            handler1.handleRequest();
        }
    }

      有了上面的基础,我们来看马士兵老师的栗子:

      想要定义三个规则应对一个字符串的过滤,分别过滤不同的规则(如HTML过滤,关键字过滤),此实例本质与上面是相通的,请注意看本质!

       参考http://www.cnblogs.com/ysw-go/p/5432921.html

  • 相关阅读:
    ntohs, ntohl, htons,htonl的比较和详解
    转 linux socket的select函数例子
    转 结构体中字节对齐问题(转载)
    C语言中volatile关键字的作用
    转 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
    转 常见hash算法的原理
    转 从头到尾彻底解析Hash表算法
    [CEOI2020 D2T1 / CF1403A] 权力药水The Potion of Great Power 题解
    [CEOI2020 D1T3 / CF1402C] 星际迷航Star Trek 题解
    [CEOI2020 D1T2 / CF1402B] 道路Roads 题解
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7764918.html
Copyright © 2011-2022 走看看