责任链设计模式例子

原文地址:
1.http://www.cnblogs.com/manmanlu/p/5732979.html
2.http://www.cnblogs.com/jyyzzjl/p/5187376.html

一、概述

使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。

二、涉及角色

抽象处理类:抽象处理类中主要包含一个指向下一处理类的成员变量nextHandler和一个处理请求的方法handRequest,handRequest方法的主要主要思想是,如果满足处理的条件,则有本处理类来进行处理,否则由nextHandler来处理。
具体处理类:具体处理类主要是对具体的处理逻辑和处理的适用条件进行实现。

三、UML类图

这里写图片描述

例子:

/*
 * 责任链对象抽象类
 */
public abstract class Handler {
    //下一级责任链
    public Handler handler;
    //设置下一级责任链
    public void setSuccessor(Handler handler){
        this.handler=handler;
    }
    public abstract void request(int request);
}

/*
 * 具体责任链一
 */
public class ConcreteHandler1 extends Handler {
    @Override
    public void request(int request) {
        if(request<10){
            System.out.println("我是handler1,我处理了请求:"+request);
        }else {
            this.handler.request(request);
        }
    }
}

/*
 * 具体责任链2
 */
public class ConcreteHandler2 extends Handler {
    @Override
    public void request(int request) {
        if(request>10){
            System.out.println("我是handler2,我处理了请求:"+request);
        }else {
            System.out.println("请求"+request+"没人能处理");
        }
    }
}

/*
 * 客户端
 */
public class App {
    public static void main(String[] args) {
     //创建处理器
     Handler handler1=new ConcreteHandler1();
     Handler handler2=new ConcreteHandler2();
     //客户端创建处理器的关联,形成链
     handler1.setSuccessor(handler2);
     //创建任务,此处为一些数字,不同大小,处理器处理结果不同
     int[] requests={4,10,59,2,16};
     //调用处理器处理        
     for(int request:requests){
         handler1.request(request);
     }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值