Java 数组的工具类 Arrays 中的排序方法是典型的应用了策略模式的例示。其定义如下:
public static <T> void sort(T[] a, Comparator<? super T> c){
//...
}
意义是,按照给定的策略执行(Comparator)对数组进行排序。sort 方法是要做的事情,T[] a 这个数组是策略作用的对象,Comparator策略本身。其中 Comparator 是一个泛型接口,所有实现了策略接口的具体策略都可以作为参数传入。Comparator 使用通配符,允许利用 T 的超类的策略对 T 进行操作。例如我们有一个书类如下。
public class Book {
private double price;
public Book(double price){
this.price = price;
}
public double getPrice() {
return price;
}
}
我们利用 sort 算法为其排序时,可以自行选择排序的依据,即策略。
public class