欢迎来到天天文库
浏览记录
ID:54768598
大小:94.50 KB
页数:11页
时间:2020-04-21
《实验五:责任链模式.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验5:责任链模式一、实验目的本实验要求学生掌握责任链模式,要求学生理解责任链模式中的二种角色并完成类的定义及测试。二、实验任务1.计算整数的阶乘。要求在计算阶乘时综合考虑计算速度与内存占用多少,使用责任链模式分析有哪些类以及这些类的角色,完成这些类的定义并分别测试每一种处理情况。答:处理者(Handler)角色:类Handler具体处理者(ConcreteHandler)角色:类UseInt、类UseLong、类UseBigInteger(1)处理者(Handler)Handler.javapublicinterfaceHandler{publicvoid
2、handleRequest(Stringstr);publicvoidsetNextHandler(Handlerhandler);}(2)具体处理者(ConcreteHandler)UseInt.javapublicclassUseIntimplementsHandler{privateHandlerhandler;privateintresult=1;publicvoidhandleRequest(Stringstr){try{intn=Integer.parseInt(str);inti=1;while(i<=n){result=result*i;if
3、(result<=0){System.out.println("超出我的能力范围,我计算不了");handler.handleRequest(str);return;}i++;}System.out.println(str+"的阶乘:"+result+"");}catch(NumberFormatExceptionexp){System.out.println(exp.toString());}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}UseLong.javapubl
4、icclassUseLongimplementsHandler{privateHandlerhandler;longresult=1;publicvoidhandleRequest(Stringstr){try{inti=1;longn=Long.parseLong(str);while(i<=n){result=result*i;if(result<=0){System.out.println("超出我的能力范围,我计算不了");handler.handleRequest(str);return;}i++;}System.out.println(str+"
5、的阶乘:"+result+"");}catch(NumberFormatExceptionexp){System.out.println(exp.toString());}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}UseBigInteger.javapublicclassUseBigIntegerimplementsHandler{privateHandlerhandler;privateBigIntegerresult=newBigInteger("1");publ
6、icvoidhandleRequest(Stringstr){BigIntegern=newBigInteger(str);BigIntegerONE=newBigInteger("1");BigIntegeri=ONE;while(i.compareTo(n)<=0){result=result.multiply(i);i=i.add(ONE);}System.out.println(str+"的阶乘:"+result+"");}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;
7、}}(3)测试类:Test.javapublicclassTest{privateHandleruseInt,useLong,useBigInteger;publicvoidcreateChain(){useInt=newUseInt();useLong=newUseLong();useBigInteger=newUseBigInteger();useInt.setNextHandler(useLong);useLong.setNextHandler(useBigInteger);}publicvoidresponseClient(Stringstr){Sy
8、stem.out.println("计算"+str+
此文档下载收益归作者所有