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

    }




  • 相关阅读:
    《观止》读后感
    读产品经理相关书籍有感
    windows phone 7基础点随手记
    Windows phone 7画图画字
    《CLR via C#》读书笔记
    《Beginning C# Objcets》学习笔记
    ASP.NET 使用alert弹出对话框后,CSS样式失效,字体变大的解决方法
    .NET COOKIE /SESSION/CACHE操作类
    【原创】VS2005 Web应用程序打包并安装数据库
    存储过程实现多条件查询
  • 原文地址:https://www.cnblogs.com/wenhuang/p/9896497.html
Copyright © 2011-2022 走看看