Przechwytywanie wzór filtru
Przechwytywanie wzór Filter (Filtr przechwytujące wzorzec) Wnioski o wydanie wniosku lub w odpowiedzi, aby zrobić kilka wstępnego przetwarzania / post-processing. Definiowanie filtru, a przed złożeniem wniosku do praktycznego stosowania docelowej aplikacji na żądanie. Filtry mogą zrobić uwierzytelniania / zezwolenie / rejestrowanie lub prośbę śledzenia, a następnie wniosek do właściwej obsługi. Poniższa jest podmiotem tego wzorca projektowego.
- Filtr (Filter) - Filtr przed lub po wykonaniu wniosku obsługi żądania do wykonywania określonych zadań.
- Łańcuch Filter (Filtr Chain) - łańcuch filtrów z wieloma filtrami i wdrożenia tych filtrów na cel w określonej kolejności.
- Target - docelowa jest procedura obsługi żądania obiektu.
- Filter Manager (Menedżer filtrów) - filtry menedżera filtrów i łańcucha filtrów.
- Client (klient) - obiekt klientado systemu TARGET obiektu, aby wysłać zgłoszenie.
realizacja
StworzymyfilterChain,FilterManager, Target, Klient oświadcza podmioty jako różnych obiektów.AuthenticationFilteriDebugFilterstanowią filtry podmiotów.
InterceptingFilterDemo pokazujemyużycie klasyClientzademonstrowania przechwytującym wzorzec projektowania filtrów.
Etap 1
Utwórz filtr interfejsu filtr.
Filter.java
Filtr {public interface public void execute (wniosek string); }
Etap 2
Utwórz filtr podmiotu.
AuthenticationFilter.java
public class AuthenticationFilter realizuje Filter { public void execute (wniosek string) { System.out.println ( "Uwierzytelnianie żądania:" + request); } }
DebugFilter.java
public class DebugFilter realizuje Filter { public void execute (wniosek string) { System.out.println ( "Żądanie dziennika:" + request); } }
etap 3,
Tworzenie docelowy.
Target.java
{public class docelowa public void execute (wniosek string) { System.out.println ( "Wykonując zapytanie:" + request); } }
Etap 4
Tworzenie łańcucha filtrów.
FilterChain.java
import java.util.ArrayList; import java.util.List; {public class filterChain Lista Prywatne <Filtr> Filtry = new ArrayList <Filtr> (); prywatne target docelowy; public void addFilter (Filtr) { filters.add (filtr); } public void execute (wniosek string) { dla (Filtr: Filtry) { filter.execute (request); } target.execute (request); } public void SetTarget (target docelowy) { this.target = docelowy; } }
Etap 5
Utwórz filtr Manager.
FilterManager.java
{public class FilterManager FilterChain filterChain; publicznego FilterManager (target docelowy) { filterChain = new filterChain (); filterChain.setTarget (cel); } public void setFilter (Filtr) { filterChain.addFilter (filtr); } public void filterRequest (request String) { filterChain.execute (request); } }
Etap 6
Tworzenie klienta klienta.
Client.java
public class Client { FilterManager filterManager; public void setFilterManager (FilterManager filterManager) { this.filterManager = filterManager; } public void wyslacwniosek (request String) { filterManager.filterRequest (request); } }
Krok 7
Użyjklientado wykazania przechwytując wzorzec projektowania filtrów.
FrontControllerPatternDemo.java
{public class InterceptingFilterDemo public static void main (String [] args) { FilterManager filterManager = new FilterManager (nowa docelowa ()); filterManager.setFilter (New AuthenticationFilter ()); filterManager.setFilter (New DebugFilter ()); Client client = new Client (); client.setFilterManager (filterManager); client.sendRequest ( "HOME"); } }
Krok 8
Sprawdź, czy wyjście.
Uwierzytelnianie żądania: HOME Żądanie dziennika: HOME Wykonywanie żądania: HOME