feat: implement composite pattern for student search

This commit is contained in:
Дюрягин Данил
2026-08-29 16:16:17 +03:00
parent 2e44ba8fd5
commit 0d1f0cbfc4
7 changed files with 163 additions and 0 deletions
@@ -0,0 +1,30 @@
package ru.project.search;
import ru.project.list.MyList;
import ru.project.list.MyLinkedList;
import ru.project.student.Student;
public class StudentSearchService {
private final StudentSearchCriteria criteria;
public StudentSearchService(StudentSearchCriteria criteria) {
if (criteria == null) {
throw new IllegalArgumentException("Criteria must not be null");
}
this.criteria = criteria;
}
public MyList<Student> find(MyList<Student> students) {
if (students == null) {
return new MyLinkedList<>();
}
MyList<Student> result = new MyLinkedList<>();
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
if (criteria.matches(s)) {
result.add(s);
}
}
return result;
}
}