简单工厂与策略模式实现排序测试
package org.lion.euler.study.sort; import java.util.Arrays; /** * 简单工厂 + 策略模式 * * @author lion * */ public class SortContext { public static enum SortType {SELECT, INSERT, BUBBLE, SHELL, MERGE, QUICK, RADIX, HEAP}; AbstractSort abstractSort = null; public SortContext(SortType sortType){ switch(sortType){ case SELECT: abstractSort = new SelectSort(); break; case INSERT: abstractSort = new InsertSort(); break; case BUBBLE: abstractSort = new BubbleSort(); break; case SHELL: abstractSort = new ShellSort(); break; case MERGE: abstractSort = new MergeSort(); break; case QUICK: abstractSort = new QuickSort(); break; case RADIX: abstractSort = new RadixSort(); break; case HEAP: abstractSort = new HeapSort(); break; } } public void sort(Integer[] array){ Integer[] temp = Arrays.copyOf(array, array.length); SortUtil.print(array); abstractSort.sort(temp); SortUtil.print(temp); } }
package org.lion.euler.study.sort; import org.lion.euler.study.sort.SortContext.SortType; public class SortTest { private static Integer[] array = {100,55,111,23,10,24,57,21,78,65}; public static void main(String[] args) { System.out.println("冒泡排序"); SortContext sortContext = new SortContext(SortType.BUBBLE); sortContext.sort(array); System.out.println("插入排序"); sortContext = new SortContext(SortType.INSERT); sortContext.sort(array); System.out.println("选择排序"); sortContext = new SortContext(SortType.SELECT); sortContext.sort(array); System.out.println("希尔排序"); sortContext = new SortContext(SortType.SHELL); sortContext.sort(array); System.out.println("归并排序"); sortContext = new SortContext(SortType.MERGE); sortContext.sort(array); System.out.println("快速排序"); sortContext = new SortContext(SortType.QUICK); sortContext.sort(array); System.out.println("基数排序"); sortContext = new SortContext(SortType.RADIX); sortContext.sort(array); System.out.println("堆排序"); sortContext = new SortContext(SortType.HEAP); sortContext.sort(array); } }