设计模式学习笔记之责任链模式

<span style="font-size:18px;">/**
 * 处理者(Handler)
 * @author zhenyonghe
 *责任链模式
 *使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合
 *关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
 */
public interface Handler {
	public void handleRequest(String number);
	public void setNextHandler(Handler handler);
}</span>
<pre name="code" class="java"><span style="font-size:18px;">/**
 * 具体处理者(ConcreteHandler)
 * @author zhenyonghe
 *
 */</span>

 
<span style="font-size:18px;">public class Beijing implements Handler{
	private Handler handler;
	private List<String>numberList;
	public  Beijing() {
		numberList=new ArrayList<>();
		numberList.add("11012345");
		numberList.add("11013456");
	}
	@Override
	public void handleRequest(String number) {
		if(numberList.contains(number)){
			System.out.println("该人在北京居住");
		}else{
			System.out.println("该人不在北京居住");
			if(handler!=null){
				handler.handleRequest(number);
			}
		}
	}
	@Override
	public void setNextHandler(Handler handler) {
		this.handler=handler;
	}
	
}</span>
<span style="font-size:18px;">/**
 * 具体处理者(ConcreteHandler)
 * @author zhenyonghe
 *
 */
</span>
<span style="font-size:18px;">public class Shanghai implements Handler {
	private Handler handler;
	private List<String> numberList;
	public  Shanghai() {
		numberList=new ArrayList<>();
		numberList.add("6661234");
		numberList.add("6664567");
	}
	@Override
	public void handleRequest(String number) {
			if(numberList.contains(number)){
				System.out.println("该人在上海居住");
			}else{
				System.out.println("该人不在上海居住");
				if(handler!=null){
					handler.handleRequest(number);
				}
			}
	}

	@Override
	public void setNextHandler(Handler handler) {
		this.handler=handler;
	}

}</span>
<span style="font-size:18px;">/**
 * 
 * @author zhenyonghe
 *用户提交一个人的身份证号码,想知道该人是在北京或者上海居住。
 */
public class App {
	private Handler beijing,shanghai;
	public void createCHain(){
		beijing=new Beijing();
		shanghai=new Shanghai();
		beijing.setNextHandler(shanghai);
	}
	public void reponseClient(String number){
		beijing.handleRequest(number);
	}
	public static void main(String[] args) {
		App app=new App();
		app.createCHain();
		app.reponseClient("6664567");
		app.reponseClient("11012345");
		app.reponseClient("78928933");

	}

}
/*
• 责任链中的对象只和自己的后继是低耦合关系,和其他对象毫无关联,这
      使得编写处理者对象以及创建责任链变得非常容易。
      
• 使用责任链的用户不必知道处理者的信息,用户不会知道到底是哪个对象
      处理了它的请求。
 */
</span>




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值