Simple factory and strategy pattern to implement sorting test
package org.lion.euler.study.sort; import java.util.Arrays; /** * Simple Factory + Strategy Mode * * @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 GO: 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("bubble sort"); SortContext sortContext = new SortContext(SortType.BUBBLE); sortContext.sort(array); System.out.println("Insertion Sort"); sortContext = new SortContext(SortType.INSERT); sortContext.sort(array); System.out.println("Select Sort"); sortContext = new SortContext(SortType.SELECT); sortContext.sort(array); System.out.println("Hill Sort"); sortContext = new SortContext(SortType.SHELL); sortContext.sort(array); System.out.println("Merge Sort"); sortContext = new SortContext(SortType.MERGE); sortContext.sort(array); System.out.println("Quick Sort"); sortContext = new SortContext(SortType.QUICK); sortContext.sort(array); System.out.println("Radix sort"); sortContext = new SortContext(SortType.RADIX); sortContext.sort(array); System.out.println("Heapsort"); sortContext = new SortContext(SortType.HEAP); sortContext.sort(array); } }