Jak*_*ake 4 java generics singleton predicate
我正在使用一个名为Predicate的接口,用于筛选集合.例如,我可以定义
public class BlackCatPredicate implements Predicate<Cat> {
public boolean evaluate( Cat c ) {
return c.isBlack();
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用一些实用工具findAll( Collection<T> coll, Predicate<T> pred)方法将谓词应用于Cats的集合,并获得黑色的等等.
我的问题是:我在我的代码中找到黑猫,所以没有必要一遍又一遍地实例化BlackCatPredicate.它应该只有一个实例.(单身?)但是,在编写许多谓词的过程中,我不想将每个谓词都作为单例来实现.那么 - 这里的设计是什么?
Mic*_*rdt 12
我将使用匿名类常量并将其与其操作的类放在一起:
public class Cat{
public static final Predicate<Cat> BLACK_PREDICATE = new Predicate<Cat>(){
public boolean evaluate( Cat c ) {
return c.isBlack();
}
};
// Rest of the Cat class goes here
}
Run Code Online (Sandbox Code Playgroud)
如果谓词具有参数,则可以使用静态工厂方法.
编辑: 正如评论中指出的那样,根据使用模式,它可能会产生更清晰的代码,以便在单独的类中收集谓词常量(和/或工厂方法),或者只为Cat或其他所有类收集谓词常量(和/或工厂方法).这主要取决于他们的数量,有多少额外的组织是有帮助的.
| 归档时间: |
|
| 查看次数: |
2902 次 |
| 最近记录: |