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);
    }

    }




  • 相关阅读:
    JSP第六周作业
    JSP第四次(2.0)
    JSP第四周
    软件测试课堂练习1
    5。建库,表,增删改查
    4.安卓练习
    2android九宫格
    第七周作业
    jsp第六周作业
    jsp第四周作业
  • 原文地址:https://www.cnblogs.com/wenhuang/p/9896497.html
Copyright © 2011-2022 走看看