责任链模式

责任链模式

空扰寡人 提交于 2019-11-30 09:39:37
责任链模式 Servlet中的过滤器就是责任链模式的应用,我们就可以用过滤器来学习我们的责任链模式。 流程:首先过滤请求时,第一个过滤器接受请求,如果它能够处理则自己处理,如果不能处理就交给下一个过滤器,依次类推。 ConcreteFilter 具体的过滤器,每个具体的过滤器都维护着一个引用,指向下一个具体的过滤器,需要检查它自身能否处理这个请求,如果不能就传递给链中的下一个过滤器。 来源: CSDN 作者: paskjx 链接: https://blog.csdn.net/chenjiexong/article/details/103246387

责任链模式

。_饼干妹妹 提交于 2019-11-29 07:53:54
责任链模式: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链发送该请求,直到有一个对象处理它为止。 类图 Handler:定义处理请求的接口,并且实现后继链(successor) public abstract class Handler { protected Handler successor; public Handler(Handler successor) { this.successor = successor; } protected abstract void handleRequest(Request request); } public class ConcreteHandler1 extends Handler { public ConcreteHandler1(Handler successor) { super(successor); } @Override protected void handleRequest(Request request) { if (request.getType() == RequestType.TYPE1) { System.out.println(request.getName() + " is handle by ConcreteHandler1");

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

ぃ、小莉子 提交于 2019-11-27 23:52:59
责任链模式是对象的行为模式。使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系。将这些对象连成一条链,沿着这条链传递该请求,直到有一个对象处理它为止。责任链模式强调的是每一个对象及其对下家的引用来组成一条链,利用这种方式将发送者和接收者解耦。 责任链模式还是很好理解的,责任链模式的应用场景也很多,比如说OA系统的工作流,Struts2的拦截器(Interceptor),servlet的过滤器(Filter) 责任链主要两个角色,一个是抽象处理者角色,一个是具体处理者角色。抽象处理者定义请求方法及连接下家的对象引用。具体处理者则是判断当前请求是否符合自己处理要求,不能处理则交给下家。 这样的话,我们在测试的时候,利用抽象处理者中对象的set方法将具体对象链接起来。然后传入合适参数即可。上代码: 抽象处理对象 ,定义一个具体对象,设置getset方法,定义接收请求方法: package chain; public abstract class Handler { private Handler seccessor; public abstract void handlerQequest(String condition); public Handler getSeccessor() { return seccessor; } public void

责任链模式【java版】

喜你入骨 提交于 2019-11-27 10:37:07
应用场景: 图形用户界面中,各个控件构成树状拓扑结构.在做消息机制时,子控件无 法处理的消息,就继续传递给父控件来处理. 特点: a)责任链模式并不指定链的拓扑结构,可以是单链表,二叉树,环 b)链接顺序由系统任意指定,甚至可以进行动态变化 一、组成结构 请求者类: public class Request {//请求者类,用flag标识 private int levelFlag; public Request(int levelFlag) { this.levelFlag=levelFlag; } public int getLevelFlag() { return levelFlag; } public void setLevelFlag(int levelFlag) { this.levelFlag = levelFlag; }} 处理者抽象类: public abstract class AbstractHandler { private AbstractHandler nextHandler=null; private int levelFlag; public void AbstractHandler(int levelFlag){ this.levelFlag=levelFlag; } //通用的供外部直接调用的接口方法 public final void

JAVA设计模式之责任链模式

倖福魔咒の 提交于 2019-11-26 17:31:53
1 责任链模式定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止 类型:行为类模式 先看一段demo: public void test(int i, Request request){ if(i==1){ Handler1.response(request); }else if(i == 2){ Handler2.response(request); }else if(i == 3){ Handler3.response(request); }else if(i == 4){ Handler4.response(request); }else{ Handler5.response(request); } } 代码的业务逻辑是这样的,方法有两个参数:整数i和一个请求request,根据i的值来决定由谁来处理request,如果i==1,由Handler1来处理,如果i==2,由Handler2来处理,以此类推。在编程中,这种处理业务的方法非常常见,所有处理请求的类有if…else…条件判断语句连成一条责任链来对请求进行处理,相信大家都经常用到。这种方法的优点是非常直观,简单明了,并且比较容易维护,但是这种方法也存在着几个比较令人头疼的问题: 代码臃肿

Tomcat 系统架构与设计模式_ 设计模式分析

偶尔善良 提交于 2019-11-26 12:12:18
门面设计模式 门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。 门面设计模式的原理 这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思义,就是将一个东西封装成一个门面好与人家更容易进行交流,就像一个国家的外交部一样。 这种设计模式主要用在一个大的系统中有多个子系统组成时,这多个子系统肯定要涉及到相互通信,但是每个子系统又不能将自己的内部数据过多的暴露给其它系统,不然就没有必要划分子系统了。每个子系统都会设计一个门面,把别的系统感兴趣的数据封装起来,通过这个门面来进行访问。这就是门面设计模式存在的意义。 门面设计模式示意图如下: 图 1. 门面示意图 Client 只能访问到 Façade 中提供的数据是门面设计模式的关键,至于 Client 如何访问 Façade 和 Subsystem 如何提供 Façade 门面设计模式并没有规定死。 Tomcat 的门面设计模式示例 Tomcat 中门面设计模式使用的很多,因为 Tomcat 中有很多不同组件,每个组件要相互交互数据,用门面模式隔离数据是个很好的方法。 下面是 Request