A primary use of function pointers is to implement the Strategy pattern.To implement this pattern in Java, declare an interface to represent the strategy, and a class that implements this interface for each concrete strategy.When a concrete strategy is used only once,it is typically declared and instantiated as an anonymous class.When a concrete strategy is designed for repeated use,it is generally implemented as a private static member class and exported in public static final field whose type is the strategy interface.
实例:
// Exporting a concrete strategy
class Host {
private static class StrLenCmp
implements Comparator<String>, Serializable {
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
// Returned comparator is serializable
public static final Comparator<String>
STRING_LENGTH_COMPARATOR = new StrLenCmp();
... // Bulk of class omitted
}
Java中运用此策略模式的典型实例为:
String:
The String class uses this pattern to export a case-independent string comparator via its CASE_INSENSITIVE_ORDER field.