zoukankan      html  css  js  c++  java
  • 责任链模式实战

    责任链模式实战

    第一步:设置参数dto

    /**
    * 请求DTO
    */
    public class RequestDTO {

    }

    第二步:设置父类handler

    public abstract class ParentHandler {
    protected ParentHandler nextHandler;

    protected ApplicationContext context = SpringContextUtil.getApplicationContext();

    protected abstract boolean needHandler(RequestDTO request);

    /**
    * 子类handler需重写该handler()方法
    * @param request
    */
    protected void handler(RequestDTO request){
    ParentHandler handler =this.nextHandler;
    while (handler !=null){
    if(handler.needHandler(request)){
    handler.handler(request);
    }
    handler =handler.nextHandler;
    }
    }
    /**
    * 设置nextHandler
    * @param nextHandler
    * @return
    */
    protected ParentHandler setNextHandler(ParentHandler nextHandler){
    this.nextHandler =nextHandler;
    return this.nextHandler;
    }
    }

    第三步:设置子类handler

    第一个子类handler

    public class FirstHandler extends ParentHandler{
    @Override
    protected boolean needHandler(RequestDTO request) {
    return true;
    }

    @Override
    protected void handler(RequestDTO request){
    System.out.println("FirstHandler.handler");
    //此处只有在firstHandler中添加,其他的子类handler不能添加
    super.handler(request);
    }
    }

    第二个子类handler

    public class SecondHandler extends ParentHandler {
    @Override
    protected boolean needHandler(RequestDTO request) {
    return true;
    }

    @Override
    protected void handler(RequestDTO request){
    System.out.println("SecondHandler.handler");
    }
    }

    第三个子类handler

    public class ThirdHandler extends ParentHandler {
    @Override
    protected boolean needHandler(RequestDTO request) {
    return true;
    }

    @Override
    protected void handler(RequestDTO request){
    System.out.println("ThirdHandler.handler");
    }
    }

    子类handler按需添加 。。。。。

    第四步:设置handler工厂类,main方法测试

    public class HandlerFactroy {
    private static ParentHandler handlerLinked =new FirstHandler();
    static {
    handlerLinked
    .setNextHandler(new SecondHandler())
    .setNextHandler(new ThirdHandler());
    }

    public static ParentHandler getHandlerLinked(){
    return handlerLinked;
    }

    public static void main(String[] args){
    RequestDTO requestDTO =new RequestDTO();
    HandlerFactroy.getHandlerLinked().handler(requestDTO);
    }

    }




  • 相关阅读:
    Python--json处理
    Python--加密模块
    Python--函数即变量
    bzoj 2276: [Poi2011]Temperature
    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛
    2017 9 15 noip模拟赛
    bzoj 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛
    2017 9 11 noip模拟赛T2
    URAL 1613. For Fans of Statistics (2017 9 6 noip模拟赛T3)
    codeforces 105 B. Dark Assembly(birbe贿赂 noip模拟赛)
  • 原文地址:https://www.cnblogs.com/wenhuang/p/9896497.html
Copyright © 2011-2022 走看看