职责链模式

什么是职责链模式?

今天学习了职责链模式在这里引用下职责链模式的概念:职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。由于英文翻译的不同,职责链模式又称为责任链模式,它是一种对象行为型模式

画个图解吧。。。。

handler就是处理的人是一个抽象的父类包含successor属性和抽象方法自己包含自己  下面的两个就是具体处理请求的接受者,当满足接受者的情况是处理请求,否则转发请求。当一个发送请求的人发送一个请求的时候,将这个请求挨着发送给各个接受请求的人,看看能否处理,处理输出结果否则一直传递。下面举一个例子:

某OA系统需要提供一个假条审批的模块,如果员工请假天数小于3天,主任可以审批该假条;如果员工请假天数大于等于3天,小于10天,经理可以审批;如果员工请假天数大于等于10天,小于30天,总经理可以审批;如果超过30天,总经理也不能审批,提示相应的拒绝信息。

根据以上例子我先上代码:

package jabari_17;

public abstract class leader {
	protected leader successor;
	
	public void setSuccessor(leader successor){
		this.successor=successor;
	}
	public abstract void leaderRequest(int d);
}
package jabari_17;

public class Director extends leader{
	public void leaderRequest(int d){
		if(d<3){
			System.err.println("主任已经批准!");
		}
		else{
			this.successor.leaderRequest(d);
		}
	}
}
package jabari_17;

public class Manager extends leader{
	public void leaderRequest(int d){
		if(d<7){
			System.err.println("经理已经批准!");
		}
		else{
			this.successor.leaderRequest(d);
		}
	}
}
package jabari_17;

public class GeneralManager extends leader{
	public void leaderRequest(int d){
		if(d<30){
			System.out.println("总经理已经批准!");
		}
		else{
			System.err.println("请假时间过长不批准!");
		}
	}

}

测试类:

package jabari_17;

public class Client {
	public static void main(String[] args) {
		leader director,manager,generalManager;
		director = new Director();
		manager = new Manager();
		generalManager = new GeneralManager();
		director.setSuccessor(manager);
		manager.setSuccessor(generalManager);
		director.leaderRequest(10);
		director.leaderRequest(50);
	}
}

这个就是完整的例子了,刚写的,也算现学现卖吧!

运行结果:

 具体又不懂得可以留言,时间关系不多说了!!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaokanshijie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值