<分区>
今天我写了以下内容article在我关于如何使用 Google Guavas Predicates 来提高设计的可扩展性的博客中。这让我问自己以下问题:“是否需要此解决方案是由更深层次的设计缺陷引起的?”。是否有另一种“更清洁”的方式来实现这种类型的可扩展性?我是不是想得太深了?
<分区>
今天我写了以下内容article在我关于如何使用 Google Guavas Predicates 来提高设计的可扩展性的博客中。这让我问自己以下问题:“是否需要此解决方案是由更深层次的设计缺陷引起的?”。是否有另一种“更清洁”的方式来实现这种类型的可扩展性?我是不是想得太深了?
最佳答案
谷歌 Guava向 Java 添加了一些应该存在但没有存在的东西(其中许多包含在 v7 中)。
IMO Guava 往往非常干净和快速。比较 Guava 的 ComparisonChain
与(例如)Apache Commons CompareToBuilder
类。两者本质上做同样的事情。虽然 Apache 非常简单易懂,新手也很容易理解,但 Guava 是更快/更清洁/资源密集度更低(更好?)的方法。
就 Predicate
而言,它们提供一个功能并且做得很好,尤其是当您将它与所有其他 Guava 东西(如 Iterators.filter
)结合使用时.
不过,在使用 Guava 工具之前,确实需要了解它们。例如,如果您要多次遍历过滤列表并且您的 Predicate
具有不可忽略的成本(CPU/内存/时间),那么您最好循环一次并首先将值存储在 Collection
中,因为其中一些方法只是将给定的 Iterable
包装到一个类中,该类的 next()
函数只是调用 next()
在未过滤的 Iterable
上,直到它找到一个通过过滤器的条目并返回它。
所以,是的,Guava 非常有用。包括 Predicate
和 Iterables
和 Collections2
过滤等。但是,了解幕后发生的事情以及陷阱或问题总是有帮助的如果您发现您的代码需要优化,您可能需要处理性能影响。
关于java - 使用 Google Guavas Predicates 将过滤方法与类解耦是否是一个好的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16890046/