• 责任链模式实战


    责任链模式实战

    第一步:设置参数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);
    }

    }




  • 相关阅读:
    PHP四种基础算法详解
    Webuploader教程(一)------简单实用上传功能
    macOS Sierra上面的php开发环境安装
    mac lamp环境 apache文件配置
    mysql 通过拷贝data文件夹进行恢复。
    mysql 执行 cannot found mac安装mysql的两种方法(含配置)
    mac 终端里进入mysql和退出
    macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16
    Javascript基础知识
    2016年6月份基础学习要求
  • 原文地址:https://www.cnblogs.com/wenhuang/p/9896497.html
Copyright © 2020-2023  润新知