策略模式
策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。
/** * 排序类 * @param <T> */ public class Sort<T> { /** * 排序算法 * @param arr 需要排序的数组 * @param comparator 比较器 */ public void sort(T[] arr, Comparator<T> comparator){ if (arr.length <= 1) return; for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (comparator.compare(arr[j], arr[minIndex]) < 0) { minIndex = j; } } T temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } public static void main(String[] args) { Cat[] arr = {new Cat(1,2), new Cat(4,3), new Cat(3, 2)}; Sort<Cat> catSort = new Sort<>(); // 这里的比较器就是一种策略 catSort.sort(arr, new Comparator<Cat>() { @Override public int compare(Cat o1, Cat o2) { return o1.age - o2.age; } }); for (Cat cat : arr) { System.out.println(cat); } } @Data private static class Cat { int age; int weight; public Cat(int age, int weight) { this.age = age; this.weight = weight; } } }
作者:[一柒微笑]