【发布时间】:2011-12-21 01:15:10
【问题描述】:
我正在阅读有效的 Java。在讨论使用函数对象作为策略的部分中,存在以下段落。
因为策略接口作为其所有具体策略的类型 在实例中,不需要公开具体的策略类来导出具体的策略类 战略。相反,“宿主类”可以导出公共静态字段(或静态工厂) 方法),其类型为策略接口,具体的策略类可以 是宿主的私有嵌套类
// 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 oop interface function-pointers effective-java