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”
  • 相关阅读:
    iOS 6 Tutorials
    iPhone:文本设计的注意事项
    Beginning Storyboards in iOS 5 Part 2
    代友招聘一名网站开发人员
    利用反射自己写的一个ModelHelper类
    SQL中 对逻辑值取反赋值的语句
    记点uml的表现方式
    我的2008年
    Framework 4.0 新关键字dynamic 之我见(一)
    我的采集小程序配置篇
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/8909111.html
Copyright © 2011-2022 走看看