设计模式之---责任链模式

本文介绍了一种设计模式——职责链模式,它通过将多个对象连接成一条链并沿链传递请求,使得多个对象都有机会处理请求,从而降低发送者与接收者间的耦合度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是链
1、链是一系列节点的集合。

2.、链的各节点可灵活拆分再重组。

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

其实刚开始我觉得这个模式和装饰者模式有点像,但两个模式的应用场景是不一样的。装饰者模式是适用于动态添加功能的,而责任链模式则是倾向于处理一个流程操作,把每个操作单独封装,形成一条工作链

package chain;

public abstract class Handler {
	/** 
     * 持有后继的责任对象 
     */  
    protected Handler handler;
    /** 
     * 示意处理请求的方法,虽然这个示意方法是没有传入参数的 
     * 但实际是可以传入参数的,根据具体需要来选择是否传递参数 
     */  
    public abstract void doRequest();
    /** 
     * 赋值方法,设置后继的责任对象 
     */  
    public void setSuccessor(Handler handler) {
        this.handler = handler;
    }
}
package chain;

public class Interceptor extends Handler {

	@Override
	public void doRequest() {
		// TODO Auto-generated method stub
		if(null!=handler) {
			System.out.println("拦截请求");
			handler.doRequest();
		}
		System.out.println("收尾操作");
	}

}
package chain;

public class TransCoding extends Handler {

	@Override
	public void doRequest() {
		// TODO Auto-generated method stub
		if(null!=handler) {
			handler.doRequest();
		}
		System.out.println("转码操作");
		System.out.println("转码成功");
	}

}
package chain;

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Handler interceptor=new Interceptor();
		Handler transCodingHandler=new TransCoding();
		interceptor.setSuccessor(transCodingHandler);
		interceptor.doRequest();
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值