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

    目录

    一、责任链模式(Chain of Responsibility Pattern)

    二、demo:

    三、项目地址


    一、责任链模式(Chain of Responsibility Pattern)

    有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。这就有点类似我们在java程序上的递归方法
             (web应该中学习到的Filter其实就是一个责任链设计模式)

    二、demo:

    定义一个接口

    /**
     * Created by yjl on 2020/11/29.
    * 责任链模式:博文介绍链接:https://blog.csdn.net/qq_27471405/article/details/110340571
    * 公众号:灵儿的笔记
     */
    public interface Filter {
    
        public void handler();
    }

    定义一个实现类,实现类里实现调用的传递

    /**
     * Created by yjl on 2020/11/29.
     * 责任链模式:博文介绍链接:https://blog.csdn.net/qq_27471405/article/details/110340571
     */
    public class AFilter implements Filter{
        private String name;
        private Filter filter;
    
        public AFilter() {
        }
    
        public AFilter(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Filter getFilter() {
            return filter;
        }
    
        public void setFilter(Filter filter) {
            this.filter = filter;
        }
    
        @Override
        public void handler() {
            System.out.println("name="+name);
            if(getFilter()!=null){
                getFilter().handler();
    
            }
    
        }
    }

    最后,在测试类上调用

    /**
     * Created by yjl on 2020/11/29.
     * 责任链模式:博文介绍链接:https://blog.csdn.net/qq_27471405/article/details/110340571
     */
    public class TestFilter {
    
        public static void main(String[] args) {
            AFilter a1= new AFilter("a1");
            AFilter b1 = new AFilter("b1");
            AFilter c1 = new AFilter("c1");
    
    
            a1.setFilter(b1);
            b1.setFilter(c1);
    
            a1.handler();
        }
    }

    运行结果:

    三、项目地址

    https://github.com/jalenFish/design-patterns/tree/master/src/main/java/cn/zygxsq/design/module/ChainResponsibilityPattern

  • 相关阅读:
    poj1228 Grandpa's Estate
    poj1113 Wall
    poj2826 An Easy Problem?!
    poj1269 Intersecting Lines
    poj3304 Segments
    BZOJ3832Rally题解
    BZOJ2802Warehouse Store题解
    李超树详解
    BZOJ4241历史研究题解
    洛谷2050 BZOJ2897美食节题解
  • 原文地址:https://www.cnblogs.com/jalenFish/p/14098990.html
Copyright © 2011-2022 走看看