(完整版)设计模式_第1页
(完整版)设计模式_第2页
(完整版)设计模式_第3页
(完整版)设计模式_第4页
(完整版)设计模式_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计题get(intindex)方法遍历链表所有的时get(intindex)方法遍历链表所有的时mportjava.util.*;publicclassTestSpeed{publicstaticvoidmain(String[]args)mportjava.util.*;publicclassTestSpeed{publicstaticvoidmain(String[]args){LinkedList<String>list=for(inti=0;i<=60096;i++){list.add("speed"+i);}IteratorvString>iter=list.iterator();longstarttime=System.while(iter.hasNext()){Stringte=iter.next();newLinkedList<String>();currentTimeMillis();}currentTimeMillis();longendTime=System.currentTimeMillis();longresult=endTime-starttime;System.out.println(

starttime=System."使用迭代遍历集合所用时间currentTimeMillis();result+"毫秒“);for(inti=0;i<list.size();i++){Stringte=list.get(i);();}();endTime=System.currentTimeMillisresult=endTime-starttime;System.out.println(”使用get方法历集合所用时间"+result+"毫秒“);}}编写饿汉式和懒汉式单件模式示意代码,并说明这两种方式的适应性。(1)饿汉式:publicclassSingleton{privatestatic SingletonunigueInstanee=newSingleton();privateSingleton(){}publicstaticSingletongetInstance(){publicstaticreturnunigueInstanee;}}(2)懒汉式:publicclassSingleton{privatestatic SingletonunigueInstanee;privateSingleton(){}publicstaticsynchronizedSingletongetInstance(){publicstaticif(unigueInstanee==null){unigueInstaneenewSingleton();}returnunigueInstanee;}}以下你看到的类和接口是取自一个动作冒险游戏,它们代表游戏角色(Character)的类和角色可以使用的武器行为的类。每个角色一次只能使用一种武器,但是可以在游戏的过程中换武器。你的工作是使用策略模式实现该游戏的架构。 CftjfactarTnMIKfiifeBehaviorBiOwAndArrowBehAvicr「实区HITMAxeBehjiviarTnMIKfiifeBehaviorBiOwAndArrowBehAvicr「实区HITMAxeBehjiviar(]广实班用磬npublicabstractclassCharacter{WeaponBehaviorweapon;publicvoidperformWeapon(){weapon.useWeapon();}publicabstractvoidfight();publicvoidsetWeaponBehavior(WeaponBehaviorw){this.weapon=w;}}publicclassQueenextendsCharacter{publicQueen(){weapon=newKnifeBehavior();}publicvoidfight(){System.out.println("皇后在战斗。");}}publicclassKing extendsCharacter{publicKing(){weapon=newSwordBehavior();}publicvoidfight(){System.out.println("国王在战斗。");}publicclassTrollextendsCharacter{publicTroll(){weapon=newBowAndArrowBehavior();publicvoidfight(){System.out.println("妖怪在战斗。");}}publicclassKnightextendsCharacter{publicKnight(){weapon=newAxeBehavior();}publicvoidfight(){System.out.println("骑士在战斗。");}}publicinterfaceWeaponBehavior{publicvoiduseWeapon();publicclassKnifeBehavior implementsWeaponBehavior{publicvoiduseWeapon(){System.out.println("使用匕首战斗!");}}publicclassBowAndArrowBehaviorimplementsWeaponBehavior{publicvoiduseWeapon(){System.out.println("使用弓箭战斗!");}}publicclassAxeBehavior implementsWeaponBehavior{publicvoiduseWeapon(){System.out.println(} 使用斧头战斗!");}publicclassSwordBehaviorimplementsWeaponBehavior{publicvoiduseWeapon(){//TODOAuto-generatedmethodstub}publicclassGame{publicstaticvoidmain(String[]args){//Kingking=newKing();Characterking=newKing();//显示谁在战斗king.fight();//使用武器king.performWeapon();System.out.println( 使用宝剑战斗!");//改变武器(对象)king.setWeaponBehavior(newKnifeBehavior());//再次使用武器king.performWeapon();System.out.println("\n另一个角色");Charactertroll= newTroll();//Trolltroll=newTroll();troll.fight();troll.performWeapon();troll.setWeaponBehavior(newSwordBehavior());troll.performWeapon();}}使用责任链模式计算阶乘,设计要求:设计一个类,该类使用int型数据计算阶乘。设计一个类,该类使用long型数据计算阶乘。设计一个类,该类使用BigInteger型数据计算阶乘。使用责任链模式将上述对象组成一个责任链,要求责任链上对象的顺序是:首先使用int型数据计算阶乘,然后使用long型数据计算阶乘,最后使用BigInteger型数据计算阶乘。用户可以使用责任链计算任意整数的阶乘,类图如下所示。注意:不够写可写到背面并注明voidcompuerMultiply(Stringnumber);voidsetNextHandler(Handlerhandler);publicinterfaceHandler{voidcompuerMultiply(Stringnumber);voidsetNextHandler(Handlerhandler);}publicclassUselnt implementsHandler{private Handlerhandlerprivate intresult=1;publicvoidcompuerMultiply(Stringnumber){try{intn=lnteger.parseInt(number);inti=1;while(i<=n){

result=result*i;);if(result<=0){);System.out.println( "超出我的能力范围,我计算不了puerMultiply(number);return;}i++;}System.out.println(number+ "的阶乘:"+result);}catch(NumberFormatExceptionexp){System.out.println(exp.toString());publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}PublicclassUseLongimplementSdAanprivateHandlerhandler;privatelongresult=1;publicvoidcompuerMultiply(Stringnumber){

try{longn=Long.parseLong(number);longi=1;while(i<=n){result=result*i;if(result<=0){System.out.println( "超出我的能力范围,我计算不了 ");puerMultiply(number);return;}i++;}System.out.println(number+ "的阶乘:"+result);}catch(NumberFormatExceptionexp){System.out.println(exp.toString());}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}importjava.math.Biglnteger;publicclassUseBigInteger implementsHandler{privateHandlerhandler;privateBigInteger result=newBigInteger("1");publicvoidcompuerMultiply(Stringnumber){try{BigIntegern=newBigInteger(number);BigIntegerONE=newBigInteger("1");BigIntegeri=ONE;while(pareTo(n)<=0){result=result.multiply(i);i=i.add(ONE);}System.out.println(number+ "的阶乘:"+result);}catch(NumberFormatExceptionexp){System.out.println(exp.toString());}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;this.handler=handler;}publicclassApplication{privateHandleruseInt,useLong,useBig;publicvoidcreateChain(){useInt=newUseInt();useLong=newUseLong();useBig=newUseBigInt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论