首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

天职链模式的结构优化

2012-11-11 
职责链模式的结构优化package compublic class Test {/** * 职责链模式的结构优化 * @param args */publi

职责链模式的结构优化

package com;public class Test {/** * 职责链模式的结构优化 * @param args */public static void main(String[] args) {// TODO Auto-generated method stub//创建请求对象Request request = new Request();//创建具体处理者AConcreateHandlerA ca = new ConcreateHandlerA();//创建具体处理者BConcreateHandlerB cb = new ConcreateHandlerB();//创建最终处理者FinalHandler fh =  new FinalHandler();//添加职责链ca.addHandler(cb);cb.addHandler(fh);//通过职责链处理请求ca.sendToHandler(request);}}


运行结果:
Processing first step
Processing second step
Processing final step


package com;public class Request {//声明状态的变量public String status = "initial";//设置状态变量的方法public void setStatus(String status){this.status =status;}//获取状态变方法public String getStatus() {return status;}//处理相应的操作public void execute (String operation){System.out.println("Processing "+operation); }}


package com;public interface Handler {//添加处理者方法public void addHandler(Handler handler);//发送请求对象到下一个处理者public void sendToHandler(Request request);//获取下一个处理者public Handler getHandler();}


package com;public class ConcreateHandlerA implements Handler {//声明下一个处理者Handler nextHandler = null;//构造器public ConcreateHandlerA(){}//添加处理者方法@Overridepublic void addHandler(Handler handler) {nextHandler = handler;}//获取下一个处理者@Overridepublic Handler getHandler() {return nextHandler;}//发送请求对象到下一个处理者@Overridepublic void sendToHandler(Request request) {if(request.getStatus().equalsIgnoreCase("initial")){//对请求对象做相应的处理操作request.execute("first step");//为请求对象设置新的状态request.status = "first step finished";if(nextHandler != null){nextHandler.sendToHandler(request);}//如果不属于自己的职责就传递给下一个处理者}else if(nextHandler != null){nextHandler.sendToHandler(request);}}}


package com;public class ConcreateHandlerB implements Handler {Handler nextHandler = null;public ConcreateHandlerB (){}@Overridepublic void addHandler(Handler handler) {nextHandler = handler;}@Overridepublic Handler getHandler() {return nextHandler;}@Overridepublic void sendToHandler(Request request) {if(request.getStatus().equalsIgnoreCase("first step finished")){request.execute("second step");request.status = "second step finished";if(nextHandler!=null){nextHandler.sendToHandler(request);}}else if(nextHandler!=null){nextHandler.sendToHandler(request);}}}


package com;public class FinalHandler implements Handler {Handler nextHandler = null;public FinalHandler(){}@Overridepublic void addHandler(Handler handler) {nextHandler = handler;}@Overridepublic Handler getHandler() {return nextHandler;}@Overridepublic void sendToHandler(Request request) {if(request.getStatus().equalsIgnoreCase("second step finished")){request.execute("final step");request.status = "final step finished";if(nextHandler !=null){nextHandler.sendToHandler(request);}}else if(nextHandler !=null){nextHandler.sendToHandler(request);}}}


热点排行