У меня есть интерфейс ProductService
с методом findByCriteria
. Этот метод имел длинный список нулевых параметров, таких как productName
, maxCost
, minCost
, producer
и т.д.
Я реорганизовал этот метод, введя Объект параметров. Я создал класс SearchCriteria
, и теперь подпись метода выглядит следующим образом:
findByCriteria (SearchCriteria criteria)
Я думал, что экземпляры SearchCriteria
создаются только вызывающими устройствами и используются только внутри метода findByCriteria
, то есть:
void processRequest() {
SearchCriteria criteria = new SearchCriteria ()
.withMaxCost (maxCost)
.......
.withProducer (producer);
List<Product> products = productService.findByCriteria (criteria);
....
}
и
List<Product> findByCriteria(SearchCriteria criteria) {
return doSmthAndReturnResult(criteria.getMaxCost(), criteria.getProducer());
}
Поэтому я не хотел создавать отдельный публичный класс для SearchCriteria
и помещать его внутри ProductServiceInterface
:
public interface ProductService {
List<Product> findByCriteria (SearchCriteria criteria);
static class SearchCriteria {
...
}
}
С этим интерфейсом что-то плохое? Где бы вы разместили класс SearchCriteria
?