Java 使用GoogleGuavas谓词将过滤方法与类解耦是一个好的设计吗

Java 使用GoogleGuavas谓词将过滤方法与类解耦是一个好的设计吗,java,guava,predicate,software-design,open-closed-principle,Java,Guava,Predicate,Software Design,Open Closed Principle,今天我在我的博客中写了以下关于如何使用GoogleGuavas谓词来提高设计的可扩展性的文章。这让我问自己这样一个问题:“这个解决方案的需要是由更深层次的设计缺陷引起的吗?”。有没有另一种“更干净”的方法来实现这种类型的可扩展性?我只是想得太深了吗?谷歌在Java中添加了一些本来应该存在但没有的东西(其中很多都包含在v7中) 国际海事组织番石榴往往是非常干净和快速。将Guava与(例如)ApacheCommonsCompareToBuilder类进行比较。两者的作用基本相同。虽然Apache非常

今天我在我的博客中写了以下关于如何使用GoogleGuavas谓词来提高设计的可扩展性的文章。这让我问自己这样一个问题:“这个解决方案的需要是由更深层次的设计缺陷引起的吗?”。有没有另一种“更干净”的方法来实现这种类型的可扩展性?我只是想得太深了吗?

谷歌在Java中添加了一些本来应该存在但没有的东西(其中很多都包含在v7中)

国际海事组织番石榴往往是非常干净和快速。将Guava与(例如)ApacheCommons
CompareToBuilder
类进行比较。两者的作用基本相同。虽然Apache非常简单,新手很容易理解,但Guava是一种更快/更干净/更少资源密集型(更好?)的方法

至于
谓词
s,它们提供了一个函数,而且做得很好,特别是当你把它与所有其他番石榴之类的东西结合起来时

不过,在使用番石榴之前,确实需要了解它们。例如,如果您要多次循环过滤列表,并且您的
谓词
具有不可忽略的成本(CPU/内存/时间),那么您最好循环一次,然后首先将值存储在
集合中,因为其中一些方法只是将给定的
Iterable
包装到一个类中,该类的
next()
函数只调用未筛选的
Iterable
上的
next()
,直到它找到一个通过筛选并返回的条目

所以,是的,番石榴非常有用。包括
谓词
s和
Iterables
集合2
过滤等,如果您发现您的代码需要优化,了解引擎盖下正在发生的事情以及可能需要处理的问题或性能影响总是有帮助的。

这是解决Person/Persons博客示例中问题的另一种方法,完全面向对象。另一个可能是一个过滤器。我没有看到任何设计缺陷,至于cleaner,您必须等待Java8删除样板代码,但这对设计的概念级别没有影响。