Я использую интерфейс Predicate, который используется для просеивания через Коллекции. Например, я могу определить
public class BlackCatPredicate implements Predicate<Cat> {
public boolean evaluate( Cat c ) {
return c.isBlack();
}
}
, а затем используйте некоторый служебный метод findAll( Collection<T> coll, Predicate<T> pred)
, чтобы применить предикат к коллекции кошек и получить только черные и т. Д.
У меня такой вопрос: я нахожу черных кошек по всему коду, поэтому нет необходимости повторять создание экземпляра BlackCatPredicate снова и снова. У него должен быть только один экземпляр. (Синглтон?) Но затем, во время написания многих предикатов, я не хочу реализовывать каждый из них как синглтон. Итак, каков здесь правильный дизайн?