Лучше всего объяснить кодом, я думаю, это просто простой пример:
public class MyPOJO {
public String name;
public int age;
public MyPOJO(String name, int age) {
this.name = name;
this.age = age;
}
}
public class MyProcessor {
public List<MyPOJO> process(List<MyPOJO> mypojos) {
List<MyPOJO> temp = new ArrayList<MyPOJO>;
for (int i=0; i <moypojos.size(); i++) {
if (filterOne(mypojos[i])) continue;
if (filterTwo(mypojos[i])) continue;
if (filterThree(mypojos[i])) continue;
temp.add(mypojos[i];
}
}
public boolean filterOne(MyPOJO mypojo) {
// in practice filters aren't so basic
return (mypojo.age < 21);
}
// assume implementations for the other filter methods
}
Да, это ужасно. По сути, у меня есть коллекция, и я хотел бы пропустить ее через сито, чтобы только продолжить обработку объектов, которые соответствуют определенным критериям. Я предполагаю, что для этого есть лучший шаблон, чем набор методов, возвращающих логические значения.