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

 

14 Strategia DesignPattern Hermetyzacja Zakresu Filtrów

02 marca 2024

Robert Szczygielski Dice Dev. Polityka Prywatności i Regulamin Szkoleń Online

Strona www stworzona w kreatorze WebWave.