java學(xué)習(xí)

          java學(xué)習(xí)

           

          設(shè)計(jì)模式之策略模式

          使用策略模式自定義對(duì)象排序和比較屬性值排序的例子
          /**
           * 
           * 實(shí)體類的接口
           *
           */
          public interface DongWu {
          public int getAge();
          public void setAge(int age) ;
          public int getHigh();
          public void setHigh(int high) ;
          }
          /**
           * 
           * 排序接口
           *
           */
          public interface MyComparator  {
          int comparatorTo(Object object);
          }
          /**
           * 
           * 具體的排序接口,和具體的實(shí)體類對(duì)象無關(guān)
           *
           */
          public interface TypeComparator  {
          int comparatorTo(Object object1,Object object2);
          }
          /**
           * 
           * 按照年紀(jì)倒敘排序
           *
           */
          public class AgeDescTypeComparator implements TypeComparator {
          @Override
          public int comparatorTo(Object object1, Object object2) {
          DongWu c1 = (DongWu) object1;
          DongWu dw = (DongWu) object2;
          if (c1.getAge() > dw.getAge()) {
          return -1;
          } else if (c1.getAge() < dw.getAge()) {
          return 1;
          }
          return 0;
          }
          }
          /**
           * 
           * 按照年紀(jì)正敘排序
           *
           */
          public class AgeTypeComparator implements TypeComparator {
          @Override
          public int comparatorTo(Object object1, Object object2) {
          DongWu c1 = (DongWu) object1;
          DongWu dw = (DongWu) object2;
          if (c1.getAge() > dw.getAge()) {
          return 1;
          } else if (c1.getAge() < dw.getAge()) {
          return -1;
          }
          return 0;
          }
          }
          public class Cat implements MyComparator,DongWu{
          private int age;
          private int high;
          private TypeComparator typeComparator =new AgeDescTypeComparator();
          public Cat(){}
          public Cat(int age){
          this.age=age;
          }
          public int getAge() {
          return age;
          }
          public void setAge(int age) {
          this.age = age;
          }
          public int getHigh() {
          return high;
          }
          public void setHigh(int high) {
          this.high = high;
          }
          @Override
          public int comparatorTo(Object object) {
          DongWu cat = (DongWu) object;
          return typeComparator.comparatorTo(this, cat);
          }
          }
          public class Dog implements MyComparator,DongWu{
          private int age;
          private int high;
          private TypeComparator typeComparator =new AgeDescTypeComparator();
          public Dog(){}
          public Dog(int age){
          this.age=age;
          }
          public int getAge() {
          return age;
          }
          public void setAge(int age) {
          this.age = age;
          }
          public int getHigh() {
          return high;
          }
          public void setHigh(int high) {
          this.high = high;
          }
          @Override
          public int comparatorTo(Object object) {
          DongWu d = (DongWu) object;
          return typeComparator.comparatorTo(this, d);
          }
          }
          public class DataSorter {
          public static void sort(MyComparator[] arr){
          for (int i = arr.length; i >0 ; i--) {
          for(int j=0;j<i-1;j++){
          MyComparator m1=arr[j];
          MyComparator m2= arr[j+1];
          if(m1.comparatorTo(m2)==1){
          swap(arr,j,j+1);
          }
          }
          }
          }
          private static void swap(Object[] arr, int j, int i) {
          Object temp =arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
          }
          }

          posted on 2017-09-13 11:06 楊軍威 閱讀(114) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 武汉市| 潞城市| 合水县| 乌兰察布市| 平凉市| 迁安市| 闵行区| 石棉县| 南木林县| 高雄市| 秦皇岛市| 太谷县| 太白县| 同心县| 土默特左旗| 广灵县| 报价| 个旧市| 光山县| 洪雅县| 浦东新区| 岳西县| 饶阳县| 海南省| 如东县| 峨眉山市| 扎鲁特旗| 泸西县| 定襄县| 太仓市| 台山市| 达日县| 兰溪市| 平阴县| 祥云县| 高陵县| 措勤县| 丘北县| 玉林市| 苍溪县| 柳州市|