面试题答案
一键面试- 定义策略接口:
- 首先定义一个策略接口,该接口包含具体策略类需要实现的方法。例如,如果是实现不同的排序算法切换场景,接口可能如下:
public interface SortStrategy { void sort(int[] array); }
- 定义具体策略类:
- 类的结构:具体策略类实现上述定义的策略接口。
- 实现接口:以冒泡排序策略类为例:
public class BubbleSortStrategy implements SortStrategy { @Override public void sort(int[] array) { for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - i - 1; j++) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } }
- 再以快速排序策略类为例:
public class QuickSortStrategy implements SortStrategy { @Override public void sort(int[] array) { quickSort(array, 0, array.length - 1); } private void quickSort(int[] array, int low, int high) { if (low < high) { int pi = partition(array, low, high); quickSort(array, low, pi - 1); quickSort(array, pi + 1, high); } } private int partition(int[] array, int low, int high) { int pivot = array[high]; int i = (low - 1); for (int j = low; j < high; j++) { if (array[j] < pivot) { i++; int temp = array[i]; array[i] = array[j]; array[j] = temp; } } int temp = array[i + 1]; array[i + 1] = array[high]; array[high] = temp; return i + 1; } }
- 每个具体策略类都通过实现策略接口,提供了不同的算法逻辑实现,从而实现算法的动态切换。