- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
责任链模式 2
第九章 责任链模式
2018-5-18
1
责任链模式
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
Chain of Responsibility Pattern
Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.
一 、 概述
2018-5-18
2
责任链模式是使用多个对象处理用户请求的成熟模式,责任链模式的关键是将用户的请求分派给许多对象,这些对象被组织成一个责任链,即每个对象含有后继对象的引用,并要求责任链上的每个对象,如果能处理用户的请求,就做出处理,不再将用户的请求传递给责任链上的下一个对象;如果不能处理用户的请求,就必须将用户的请求传递给责任链上的下一个对象。
一 、 实例
2018-5-18
3
用户提交一个人的身份证号码,想知道该人是在北京、上海或者天津居住。
二、责任链模式的结构与使用
2018-5-18
4
模式的结构中包括两种角色:
处理者(Handler)
具体处理者(ConcreteHandler)
2018-5-18
5
模式的UML类图
2018-5-18
6
模式的结构的描述与使用
1.处理者(Handler): Handler.java
public interface Handler{
public abstract void handleRequest(String number);
public abstract void setNextHandler(Handler handler);
}
2018-5-18
7
模式的结构的描述与使用
2.具体处理者(ConcreteHandler)_1: Beijing.java
import java.util.*;
public class Beijing implements Handler{
private Handler handler;
private ArrayListString numberList;
Beijing(){
numberList=new ArrayListString();
numberList.add(11129812340930034);
numberList.add(10120810340930632);
numberList.add(22029812340930034);
numberList.add(32620810340930632);
}
public void handleRequest(String number){
if(numberList.contains(number))
System.out.println(该人在北京居住);
else{
System.out.println(该人不在北京居住);
if(handler!=null)
handler.handleRequest(number);
}
}
public void setNextHandler(Handler handler){
this.handler=handler;
}
}
2018-5-18
8
模式的结构的描述与使用
2.具体处理者(ConcreteHandler)_2: Shanghai.java
import java.util.*;
public class Shanghai implements Handler{
private Handler handler;
private ArrayListString numberList;
Shanghai(){
numberList=new ArrayListString();
numberList.add(3
文档评论(0)