Factory工场模式
Factory工厂模式
/** * 模式名称:工厂模式 * 模式特征:通过一个通用的接口创建不同的类对象 * 模式用途:面向接口编程 * */ public class Factory { //各种排序方法的命令标示 public static final String SELECTION_SORT="selection"; public static final String BUBBLE_SORT="bubble"; public static final String LINEARINSERT_SORT="linear"; public static final String QUICK_SORT = "quick"; public static ISortNumber getOrderNumber(String id) { //String的equalsIgnoreCase方法在比较两个字符串是否相等时不区分大小写 if(SELECTION_SORT.equalsIgnoreCase(id)) { return new SelectionSort(); } else if(BUBBLE_SORT.equalsIgnoreCase(id)) { return new BubbleSort(); } else if(LINEARINSERT_SORT.equalsIgnoreCase(id)) { return new LinearInsertSort(); } else if(QUICK_SORT.equalsIgnoreCase(id)) { return new QuickSort(); } else { return null; } } /** * 输出整型数组 * @param array */ public static void printIntArray(int[] array) { if(array!=null) { for(int i=0;i<array.length;i++) { System.out.print(array[i] + " "); } System.out.println(); } } public static void main(String[] args) { int[] intarray = new int[]{6,1,3,5,4}; System.out.println("排序前的数组是:"); printIntArray(intarray); System.out.println("用选择排序法对数组进行升序排序后的结果是:"); int[] orderedArray = Factory.getOrderNumber(Factory.SELECTION_SORT) .sortASC(intarray); printIntArray(orderedArray); System.out.println("用冒泡排序法对数组进行升序排序后的结果是:"); orderedArray = Factory.getOrderNumber(Factory.BUBBLE_SORT).sortASC(intarray); printIntArray(orderedArray); System.out.println("用线性插入排序法对数组进行升序排序后的结果是:"); orderedArray = Factory.getOrderNumber(Factory.LINEARINSERT_SORT).sortASC(intarray); printIntArray(orderedArray); System.out.println("用快速排序法对数组进行升序排序后的结果是:"); orderedArray = Factory.getOrderNumber(Factory.QUICK_SORT).sortASC(intarray); printIntArray(orderedArray); } }