Interneto tinklapių architektūriniai šablonai/Perimantysis filtras


Perimančiojo filtro architektūrinis šablonas

Kontekstas

keisti

Veiksmai susiję su HTTP protokolo antraščių apdorojimu, URL perrašymu, teksto perkodavimu ir kitais panašiais dalykais, nėra tiesiogiai susiję su konkrečia aplikacija ir juos galima aptikti nemažoje dalyje aplikacijų. Jei prireikė realizuoti būtent tokius veiksmus, tai šis šablonas greičiausiai tinka.

Problema

keisti

Reikia modifikuoti užklausas prieš jų apdorojimą ir modifikuoti rezultatus po užklausos apdorojimo. Reikia, kad kodas atsakingas už šiuos veiksmus būtų kiek galima daugiau atskirtas nuo kito kodo, kad jį būtų galima panaudoti ir kitur.

Sprendimas

keisti

Sukurti filtrų sąrašą, kuris atliktų įprastinius veiksmus prieš užklausos apdorojimą ir ją apdorojus. Paprasčiausia tai realizuoti panaudojant filtrų sąrašą, tačiau galima realizuoti ir dekoratoriaus šablono [GHJ+95] pagalba. Filtrų rinkinys įvykdomas prieš kontrolerį bei prieš siunčiant atsakymą į naudotojo užklausą. Dalis filtrų gali būti naudojama tik kuriam nors viename iš šių etapų.

Rezultatai

keisti
  • Dalis veiksmų, kurie nepriklauso nuo konkrečios aplikacijos, bet susiję su užklausos ar atsakymo apdorojimu gali būti realizuoti atskirai
  • Lengviau testuojama dalis, kuri realizuota filtru
  • Padidinamos kodo galimybės būti panaudotam kitose aplikacijose