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.
本文介绍了如何在Java中使用策略模式,通过定义策略接口和具体策略类来实现灵活的行为选择。具体展示了如何通过匿名内部类和静态成员类来实现一次性使用或多次复用的具体策略,并提供了字符串比较策略的实例。
1326

被折叠的 条评论
为什么被折叠?



