设计模式之_Strategy_03
生活随笔
收集整理的這篇文章主要介紹了
设计模式之_Strategy_03
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package com.learn.stratege;/*** 如果DataSorter對于float類型進(jìn)行排序,你該怎么辦* 有人的人說很簡單,再加一個sort方法,重載里面用來排序float,* 如果要加一個double用來排序的方法,老實說這個更容易,直接sort(),參數(shù)里面數(shù)組是double類型* double類型也能確定誰大誰小,所以這個方法也能去排序double類型,* 下面我要說難的了* * 請問下面有兩只貓,我想讓DataSort對貓進(jìn)行排序,這個時候你該怎么辦,* 有人說那還不簡單,* @author Leon.Sun**/
public class DataSorter {/*** Cat是Cat類型的數(shù)組* 問題是其他算法我不看,我不管,問題是我怎么判斷兩只貓誰大誰小呢* 怎么來判斷兩只貓到底誰大誰小呢* 有人說我們可以通過cat.get貓的屬性* @param a*/public static void sort(Cat[] a) {for(int i=0;i<a.length;i++) {for(int j=0;j<j-i-1;j++) {/*** 如果對這只貓的高度大于j+1這只貓的高度,那么就是j這只貓比j+1這只貓更大* 當(dāng)然這里面要有一個swap*/if(a[j].getHeight()>a[j+1].getHeight()) {swap(a,j,j+1);}}}}/*** 最好是新建一個swap* 只不過我們要把int類型改成Cat類型* 這樣這只貓就可以排序了* 我們拿到這只貓的高度,讓他來和另外一只貓的高度來比* 只要高度高于另外一只貓我就認(rèn)為我這只貓比另外一只貓大,這樣我就又能排序了,* @param a* @param j* @param y*/private static void swap(Cat[] a, int x, int y) {Cat temp = a[x];a[x] = a[y];a[y] = temp;}/*** 這個方法只要判斷誰大誰小,只要有這個標(biāo)準(zhǔn),* 這個方法就能幫你排序* @param a*/public static void sort(int[] a) {for(int i=0;i<a.length;i--) {for(int j=0;j<i-1;j++) {if(a[j]>a[j+1]) {swap(a,j,j+1);}}}}private static void swap(int[] a, int x, int y) {int temp = a[x];a[x] = a[y];a[y] = temp;}public static void p(int[] a) {for(int i=0;i<a.length;i++) {System.out.print(a[i] + " ");}System.out.println();}/*** 定義一個可以輸出Cat類型的方法* @param a*/public void p(Cat[] a) {for(int i=0;i<a.length;i++) {System.out.print(a[i] + " ");}System.out.println();}}
package com.learn.stratege;/*** 作為貓來說他可能有他自己的屬性* * 我直接寫,需要Cat的一個構(gòu)造方法* @author Leon.Sun**/
public class Cat {/*** 由于它是private,別人要訪問就得通過get/set給我們設(shè)定一下*/private int height;private int weight;public Cat() {super();// TODO Auto-generated constructor stub}/*** 在構(gòu)造方法里我可以指定高度和體重* @param height* @param weight*/public Cat(int height, int weight) {super();this.height = height;this.weight = weight;}public int getHeight() {return height;}public void setHeight(int height) {this.height = height;}public int getWeight() {return weight;}public void setWeight(int weight) {this.weight = weight;}/*** 表示我這個方法是重寫的,如果你不理解,就簡單這么理解,當(dāng)我需要打印一只貓的時候,* 會調(diào)用貓的toString方法,*/@Overridepublic String toString() {return "Cat [height=" + height + ", weight=" + weight + "]";}}
package com.learn.stratege;/*** 驗證一下* @author Leon.Sun**/
public class Test {public static void main(String[] args) {DataSorter dataSorter = new DataSorter(); /*** 我就寫三只貓* 現(xiàn)在他能排好順序了* 現(xiàn)在p這個方法只能輸出int類型*/Cat[] a = {new Cat(8,8),new Cat(2,2),new Cat(1,1)};dataSorter.sort(a);/*** 當(dāng)我們運行這個程序的時候,其實是調(diào)用類的hashCode方法,* Object的兩個方法,一個是toString,一個是equals,* 我們想要Cat正常的輸出,給他加一個toString方法*/dataSorter.p(a);}
}
?
總結(jié)
以上是生活随笔為你收集整理的设计模式之_Strategy_03的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式之_Strategy_02
- 下一篇: 设计模式之_Strategy_04