zoukankan      html  css  js  c++  java
  • 责任链模式--行为模式

    适用场景如下:

    springmvc中的拦截器就用了责任链模式

    UML图如下:

    其中最为关键位handle类

    代码如下:

    public abstract class Handle {

    protected String name;

    protected Handle nextHandle;

    public void setName(String name) {
    this.name = name;
    }

    public void setNextHandle(Handle nextHandle) {
    this.nextHandle = nextHandle;
    }

    protected abstract void hand(HandRequest request);

    protected abstract boolean isHand(HandRequest request);

    protected void handFun(HandRequest request){
    if(this.isHand(request)){
    this.hand(request);
    }else {
    System.out.println(this.name+"处理不了,让"+nextHandle.name+"处理");
    nextHandle.handFun(request);
    }
    }
    }

    AHandle类

    public class AHandle extends Handle {
    
        @Override
        protected void hand(HandRequest request) {
            System.out.println("我是A,正在处理:"+request.getDay());
        }
    
        @Override
        protected boolean isHand(HandRequest request) {
            if(request.getDay()>10){
                return false;
            }
            return true;
        }
    }

    Client类调用

    public static void main(String[] args) {
    Handle aHandle = new AHandle();
    aHandle.setName("a");
    Handle bHandle = new BHandle();
    bHandle.setName("b");
    Handle cHandle = new CHandle();
    cHandle.setName("c");

    //构件责任链
    aHandle.setNextHandle(bHandle);
    bHandle.setNextHandle(cHandle);

    //处理A
    HandRequest handRequestA = new HandRequest(1);
    aHandle.handFun(handRequestA);

    System.out.println("=========================");

    //处理B
    HandRequest handRequestB = new HandRequest(11);
    aHandle.handFun(handRequestB);

    System.out.println("=========================");
    //处理C
    HandRequest handRequestC = new HandRequest(111);
    aHandle.handFun(handRequestC);

    结果效果如下:

    欢迎关注我的公众号:“进阶者euj”
  • 相关阅读:
    记一次在Windows10桌面环境搭建Jekins的吐血经历
    Windows系统下的输入法选择
    Linux后台进程启停脚本模板
    crontab采坑总结
    编程软件仓库集合
    CentOS7安装Chrome及驱动
    不错的“淘宝”网站
    软件下载网站集合
    在线API集合
    在线教程集合
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/8909111.html
Copyright © 2011-2022 走看看