0%

Stategy

Strategy


定义

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。

本模式使得算法可独立于使用它的客户而变化。

栗子

java标准库

  • Arrays.sort()

    1
    2
    3
    4
    5
    6
    7
    public static void main(String[] args) {
    String[] array = { "apple", "Pear", "Banana", "orange" };
    Arrays.sort(array,String::compareToIgnoreCase);
    for (var s : array) {
    System.out.print(s);
    }
    }

自己写一个demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package eternal.fire;

import java.util.Arrays;
import java.util.Comparator;

public class LeetCode {
public static void main(String[] args) {
String[] array = {"apple", "Pear", "Banana", "orange"};
sort(array, String::compareToIgnoreCase);
System.out.println(Arrays.toString(array));
}

public static void sort(String[] array, Comparator<String> comparator) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length - 1; j++) {
if (comparator.compare(array[j], array[j + 1]) > 0) {
String tmp = array[j + 1];
array[j + 1] = array[j];
array[j] = tmp;
}
}
}
}
}

核心思想

在一个计算方法中把容易变化的算法抽出来作为“策略”参数传进去,使得新增策略不必修改原有逻辑。