Treci la conținutul principal

Ce este

Șablonul Proxy pune în fața unui obiect real un înlocuitor cu aceeași interfață. Apelanții vorbesc cu proxy-ul ca și cum ar fi obiectul real; proxy-ul decide când și cum îl implică pe cel original.

Sarcini obișnuite ale unui proxy: păstrarea răspunsurilor în cache, verificarea accesului, amânarea unei creări costisitoare, numărarea apelurilor.


Exemplu: un proxy cu cache

Serviciul real de meteo este lent. Proxy-ul răspunde la întrebările repetate din cache-ul său și apelează serviciul doar pentru cele noi — în spatele exact aceleiași interfețe.

Înlocuitorul care ține minte

Prima întrebare despre Paris ajunge la serviciul remote; a doua primește răspuns din cache — linia „apelarea serviciului remote” se afișează o singură dată. O singură verificare isset pe tabloul de cache decide pe ce cale merge o întrebare.

Prompt
Scrie un script PHP cu un Proxy de cache: o interfață Weather (metoda forecast), o clasă WeatherService care afișează un mesaj când apelează serviciul remote și un proxy CachedWeather care păstrează răspunsurile într-un tablou și servește repetările din cache. Cere prognoza pentru același oraș de două ori și afișează ambele răspunsuri.
Ieșire: script PHP

Când să îl folosești

Folosește-l pentru a adăuga cache, control al accesului, evaluare leneșă sau contorizare în fața a ceva ce nu poți sau nu ar trebui să modifici — mai ales resurse remote sau costisitoare.

Renunță la el când obiectul îți aparține și comportamentul ține de interiorul lui. Un proxy controlează accesul; un decorator adaugă comportament în straturi — alege intenția care se potrivește.


Avantaje și dezavantaje

Avantaje: apelanții nu au nevoie de nicio modificare; munca costisitoare este evitată sau controlată într-un singur loc.

Dezavantaje: comportament ascuns — un apelant poate primi un răspuns din cache fără să știe; cache-urile învechite și refuzurile neașteptate se depanează în spatele unei interfețe care pare inofensivă.