欢迎来到天天文库
浏览记录
ID:40313356
大小:22.22 KB
页数:4页
时间:2019-07-30
《设计模式之3 strategy模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C&C当中的策略()模式设计模式的就是把简答的问题复杂化,原因是为了扩展。产生多态,抽象,复杂化。C&C就是指Comparable和Comparator接口。1.Comparable接口为了比较两个对象的大小,为了能对对象进行排序。在java当中定义了comparable接口:注意comparable是在java.lang当中。packagecom.bjsxt.dp.strategy;publicinterfaceComparable{//和某个目标(对象)进行比较,注意返回值是int类型,//如果返回值是>0的,就是大于。//如果返回值是小于<0的,就是小于。//如果返回值是=0的,就是等
2、于。publicintcompareTo(Objecto);}Cat类://在cat这个类当中,具体的比较方法的实现publicintcompareTo(Cato){if(oinstanceofCat){Catc=(Cat)o;if(this.getHeight()>c.getHeight())return1;elseif(this.getHeight()3、ct进行排序的算法publicstaticvoidsort(Object[]a){for(inti=a.length;i>0;i--){for(intj=0;j4、agecom.bjsxt.dp.strategy;publicclassDogimplementsComparable{publicDog(intfood){super();this.food=food;}privateintfood;publicintgetFood(){returnfood;}publicvoidsetFood(intfood){this.food=food;}//@Override//对dog进行排序,具体的实现在dog类当中,datasort方法不用改。publicintcompareTo(Objecto){Dogd=(Dog)o;if(this.food>d.get5、Food())return1;elseif(this.foodo2返回正数//o16、o2返回0intcompare(Objecto1,Objecto2);}packagecom.bjsxt.dp.strategy;publicclassCatimplementsjava.lang.Comparable{privateintheight;//privateComparatorcomparator=newCatHeightComparator();//定义了一个成员变量comparator,根据不同的设定来对应不同的比较策略。如果想修改比较策略,只需要修改这个comparator去指向不同的子类对象。privatejava.util.Comparatorco7、mparator=newCatHeightComparator();privateComparatorcomparator1=newCatWeightComparator();publicjava.util.ComparatorgetComparator(){returncomparator;}publicvoidsetComparator(java.util.Comparatorcomparator){th
3、ct进行排序的算法publicstaticvoidsort(Object[]a){for(inti=a.length;i>0;i--){for(intj=0;j4、agecom.bjsxt.dp.strategy;publicclassDogimplementsComparable{publicDog(intfood){super();this.food=food;}privateintfood;publicintgetFood(){returnfood;}publicvoidsetFood(intfood){this.food=food;}//@Override//对dog进行排序,具体的实现在dog类当中,datasort方法不用改。publicintcompareTo(Objecto){Dogd=(Dog)o;if(this.food>d.get5、Food())return1;elseif(this.foodo2返回正数//o16、o2返回0intcompare(Objecto1,Objecto2);}packagecom.bjsxt.dp.strategy;publicclassCatimplementsjava.lang.Comparable{privateintheight;//privateComparatorcomparator=newCatHeightComparator();//定义了一个成员变量comparator,根据不同的设定来对应不同的比较策略。如果想修改比较策略,只需要修改这个comparator去指向不同的子类对象。privatejava.util.Comparatorco7、mparator=newCatHeightComparator();privateComparatorcomparator1=newCatWeightComparator();publicjava.util.ComparatorgetComparator(){returncomparator;}publicvoidsetComparator(java.util.Comparatorcomparator){th
4、agecom.bjsxt.dp.strategy;publicclassDogimplementsComparable{publicDog(intfood){super();this.food=food;}privateintfood;publicintgetFood(){returnfood;}publicvoidsetFood(intfood){this.food=food;}//@Override//对dog进行排序,具体的实现在dog类当中,datasort方法不用改。publicintcompareTo(Objecto){Dogd=(Dog)o;if(this.food>d.get
5、Food())return1;elseif(this.foodo2返回正数//o16、o2返回0intcompare(Objecto1,Objecto2);}packagecom.bjsxt.dp.strategy;publicclassCatimplementsjava.lang.Comparable{privateintheight;//privateComparatorcomparator=newCatHeightComparator();//定义了一个成员变量comparator,根据不同的设定来对应不同的比较策略。如果想修改比较策略,只需要修改这个comparator去指向不同的子类对象。privatejava.util.Comparatorco7、mparator=newCatHeightComparator();privateComparatorcomparator1=newCatWeightComparator();publicjava.util.ComparatorgetComparator(){returncomparator;}publicvoidsetComparator(java.util.Comparatorcomparator){th
6、o2返回0intcompare(Objecto1,Objecto2);}packagecom.bjsxt.dp.strategy;publicclassCatimplementsjava.lang.Comparable{privateintheight;//privateComparatorcomparator=newCatHeightComparator();//定义了一个成员变量comparator,根据不同的设定来对应不同的比较策略。如果想修改比较策略,只需要修改这个comparator去指向不同的子类对象。privatejava.util.Comparatorco
7、mparator=newCatHeightComparator();privateComparatorcomparator1=newCatWeightComparator();publicjava.util.ComparatorgetComparator(){returncomparator;}publicvoidsetComparator(java.util.Comparatorcomparator){th
此文档下载收益归作者所有