[关键字]:java,design pattern,设计模式,《Java与模式》,Chain of Responsibility,责任链模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
[正文]:
package pattern.chainofresponsibility;
/**
* 责任链模式:Chain of Responsibility
* @version 2009-5-9
* @author Winty(wintys@gmail.com)
*/
public class ChainOfResponsibilityTest{
public static void main(String[] args){
Handler handler1 = new ConcreteHandler1();
Handler handler2 = new ConcreteHandler2();
Handler handler3 = new ConcreteHandler3();
//设置责任链
handler3.setSuccessor(handler2);
handler2.setSuccessor(handler1);
//发送命令
handler3.handleRequest();
}
}
/**
*抽象处理者
*/
abstract class Handler{
protected Handler successor;
public Handler getSuccessor(){
return successor;
}
public void setSuccessor(Handler successor){
this.successor = successor;
}
public abstract void handleRequest();
}
/**
*具体处理者
*/
class ConcreteHandler1 extends Handler{
public void handleRequest(){
if(getSuccessor() != null){
System.out.print("Request passed:from class Concrete1");
System.out.println(" to class" + getSuccessor().getClass().getName());
getSuccessor().handleRequest();
}
else{
System.out.println("Request handled in ConcreteHandler1");
}
}
}
/**
*具体处理者
*/
class ConcreteHandler2 extends Handler{
public void handleRequest(){
if(getSuccessor() != null){
System.out.print("Request passed:from class Concrete2");
System.out.println(" to class " + getSuccessor().getClass().getName());
getSuccessor().handleRequest();
}
else{
System.out.println("Request handled in ConcreteHandler2");
}
}
}
/**
*具体处理者
*/
class ConcreteHandler3 extends Handler{
public void handleRequest(){
if(getSuccessor() != null){
System.out.print("Request passed:from class Concrete3");
System.out.println(" to class " + getSuccessor().getClass().getName());
getSuccessor().handleRequest();
}
else{
System.out.println("Request handled in ConcreteHandler3");
}
}
}
相关推荐
依赖于spring,可用于接口的调试及性能的展示,以及访问控制层的使用,简化控制层的繁琐代码,简化spring mvc的配置,替换的请求前的各个操作,重组性低,REST风格的接口使用简单,报告采用责任链模式设计,轻巧控制...
设计模式-责任链的演示项目,导入eclipse中可直接运行,编程语言:java 设计模式学习请参考博客 https://www.li-tian.net.cn/archives/2020-01-27-23-01-15
report项目请求通道采用责任链模式设计,扩展性极强,流程完全可控! ankang-report report 是一个开源的访问层框架,基于java平台,依赖于spring,以Mozilla Public License 2.0 协议发布。可用于接口的调试及性能...
DispatcherServlet请求逻辑处理采用责任链模式,方便增加修改规则 不使用XML配置,完全注解开发 IOC容器,解决循环依赖注入问题 支持多AOP增强,切点支持aspectj表达式 Http请求访问设计图: 示例代码 git clone ...
全程监控机密文件在使用过程中的内存数据,任何妄图通过复制\粘贴、拖动或插入等手段将密文内容导入到明文的行为都将被阻止,并将留下审计日志,待日志审计员追查责任人。 •权限控制: 对密文的只读(密文使用...
5、再次重申,原版Win7的Syprep.exe 3.14在运行时同样具有一定的失败率,别将所有责任都推到ES3身上 6、更改XP部署模式,最后加入一个强制重启功能,避免系统因程序执行完毕判定失误而造成的部署后无法自动重启的...
因此,选择什么样的教学模式进行教学也很重要。 学情一:多数学生家中有计算机,知识面较广,具备一定的学习能力以及分析问题的能力。针对这种 情况,在课堂教学中应倾向于体现学生的主体地位,在教学设计中适当增加...
2002-04-14 11:56作者:陈劲宏出处:Yesky责任编辑: 由于HLP格式已经逐 渐被CHM格式所替代,所以制作HLP格式帮助文档的工具相对来说要少一些。一般有Windows Help Designer/WinHelp Edition、 helppad、Windows...
所有的翻译和校对工作历时半年多,在此,我要感谢为本书的出版付出辛勤汗水的电子工业出版社博文视点的工作人员,特别要感谢本书的策划编辑朱沭红老师和责任编辑顾慧芳老师,她们的严谨认真工作使该译本可读性更高,...