责任链模式

一、背景

       相信大家都到政府部门办过事情,拿着一个申请或者证明什么的,首先需要到A部门盖章,然后到B机构盖章,然后到C单位签字,想想如果他们的职责改变了(意味着你盖章签字的顺序要发什么改变),或者他们之间又新增了一个机构,你是不是还得了重新知道他们之间的盖章签字顺序。如果是在系统中实现这么个场景,怎么搞?顺序变的话去修改执行代码的顺序?增加机构的时候加入新机构的代码?是不是挺麻烦?是不是违反了开闭原则?所以责任链模式出现了。

二、概念

       在责任链模式中,很多对象由每一个对象对其下家的引用而形成的一条链。请求在该链上传递,直到某个对象决定对该请求处理,客户端对哪个对象处理该请求并不关心,使得在不影响客户端的情况下可以重新调整和分配责任。

三、代码实例

/**
 * 抽象责任处理角色
 */
abstract class Handler {
	protected Handler nextHandler;// 后继责任处理者

	public Handler getNextHandler() {
		return nextHandler;
	}

	public void setNextHandler(Handler nextHandler) {
		this.nextHandler = nextHandler;
	}

	public abstract void opreator();
}

/**
 * 具体责任角色
 */
class MyHandlers extends Handler {
	String name;

	public MyHandlers(String name) {
		this.name = name;
	}

	@Override
	public void opreator() {
		System.out.println(this.name + "处理请求");
		if (getNextHandler() != null) {
			getNextHandler().opreator();
		}
	}
}

public class ChainOfResponsibilityPattern {

	public static void main(String agrs[]) {
		// 实例化后生成一系列相互持有的对象,构成一条责任链。
		Handler handlerA = new MyHandlers("A对象");
		Handler handlerB = new MyHandlers("B对象");
		Handler handlerC = new MyHandlers("C对象");

		handlerA.setNextHandler(handlerB);
		handlerB.setNextHandler(handlerC);
		handlerA.opreator();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值