• java实现23种设计模式之责任链模式


    顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

    在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

    package com.ceshi16;
    
    public interface Handler {
        public void operator();
    }
    package com.ceshi16;
    
    public abstract class AbstractHandler {
        private Handler handler;
    
        public Handler getHandler() {
            return handler;
        }
    
        public void setHandler(Handler handler) {
            this.handler = handler;
        }
    }
    package com.ceshi16;
    
    public class MyHandler extends AbstractHandler implements Handler{
    
        private String name;
    
        public MyHandler(String name) {
            this.name = name;
        }
    
        @Override
        public void operator() {
            System.out.println(name+"deal!");
            if(getHandler()!=null){
                getHandler().operator();
            }
        }
    
    }
    package com.ceshi16;
    
    public class Test {
    
        public static void main(String[] args) {
            MyHandler h1 = new MyHandler("h1");
            MyHandler h2 = new MyHandler("h2");
            MyHandler h3 = new MyHandler("h3");
    
            h1.setHandler(h2);
            h2.setHandler(h3);
    
            h1.operator();
        }
    }

    结果:

    其实,责任链模式的处理原则是 "如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。"

    所以实例并不能体现出这个。通常需要在operator方法中添加一些额外的判定。

  • 相关阅读:
    EasyUI datagrid 的多条件查询
    js将时间戳转换为日期类型
    js限制字符串长度,超出的部分补...
    js打印WEB页面内容代码大全
    js倒计时一分钟
    java获取上个星期第一天和最后一天
    两个Html页面之间值得传递
    jS处理中英文时间格式化问题
    JS获取当月第一天和最后一天
    Java 计算两个日期相差月数、天数
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10756442.html
Copyright © 2020-2023  润新知