Strategia zastosowana w tym zadaniu jest bardzo podobna do tej jak była ostatnio dodana, jednak tutaj zachodzi większe prawdopodobieństwo popełnia błędu.
Klasa rozszerzające RilterRange, mogą już podczas tworzenie dostać informację o spodziewanej encji, np.:
class ExpensesFilterRange extends FilterRang<ExpensesEntit> {}
Klasy rozszarzające FilterRange, powinny dostać odpowiednią nazwę, przy adnoctacji @Component("nazwaKlasy"), nazwa dodane w enumie:
-- FOR_ASSETS("forAssertValidator", "forAssetsRange")
-- FOR_EXPENSES("forExpensesValidator", "forExpensesRange")
Klasa FilterRangeStrategy i metod getFilteredDataForSpecification, powinna mieć parametry:
- UserEntity
- Mapa filtrów
- enum FilterSpecification
Klasa FilterRangeStrategy i metod getFilteredDataForSpecification, powinna zwracać List<T> - parametr generyczny
Metoda getAllByFilter, w Klasie FilterRang, również zostanie rozszerzona o nowy parametr:
- enum FilterSpecification
Testy jednostkowe padły, gdyż przesłaniana klasa już jest nie aktualna, należy ją zmienić, z AssetsFilterRange, na FilterRangeStrategy (dodatkowo zmiana nazw).
HINT: po zastosowaniu strategii, klasa abstrakcyjna FilterRange i jej implementacje mogą mieć dostęp pakietowy - brak modyfikatora dostępu.
HINT: można wyczyścić klasę FilterRange i usumąć metodę getFilteredName
Robert Szczygielski Dice Dev. Polityka Prywatności i Regulamin Szkoleń Online
Strona www stworzona w kreatorze WebWave.